正如你们大多数人所经历的那样,开发控制台应用程序就像一样简单
void mainloop(){
while (1){
giveInstructions();
getInput();
if (!process()) break;
printOutput();
}
}
int main(){
mainloop();
return 0;
}
然而,在GUI中,这就成了一个问题。
我们仍然可以giveInstructions()
、process()
和printOutput()
,但getInput()
不起作用,因为它依赖于一个事件,通常是按钮点击或按键按下。
如何在代码更改最少的情况下将控制台应用程序移植到gui应用程序?(最好不要改变main
方法,尽可能少地改变mainloop
功能)
注意:我穿线还不太舒服。
由于没有给出特定的语言,我将在C#中展示一个示例,在该示例中,您可以使用与控制台应用程序相同的代码,并使用简单的GUI。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//using form-editor, double-click buttons or use the following
btnInput.Click += new EventHandler(btnInput_Click);
btnContinue.Click += new EventHandler(btnContinue_Click);
giveInstructions();
}
private void giveInstructions()
{
txtInfo.Text = "";
txtInput.Text = "";
//display instructions to multi-line textbox
}
private void btnInput_Click(object sender, EventArgs e)
{
//or you can just add another button for exit.
if (txtInput.Text == "expected value for exit")
{
Application.Exit();
}
else
{
getInput();
}
}
private void getInput()
{
string strInput = txtInput.Text;
//do stuff
printOutput();
}
private void printOutput()
{
//display output to multi-line textbox
}
private void btnContinue_Click(object sender, EventArgs e)
{
giveInstructions();
}
}