我目前正在制定一个应该通过单独的输入表格控制的议程。
在此表单上,我需要等待用户输入才能移动下一个输入字段。
以下是添加任务的待办事项字段的条目。 之后,它还有日期,时间和提醒字段。
private void btn_Say_Click(object sender, EventArgs e)
{
string text = tbx_Say.Text;
if(text.Contains("Add") || text.Contains("add"))
{
if(text.Contains("Task") || text.Contains("task"))
{
screen.btn_Tasks.PerformClick();
while(screen.task.tb_TaskToDo.Text == "")
{
tbx_Anne.Text = "What should happen?";
Thread.Sleep(1000);
}
}
}
}
执行点击启动一个新的,需要通过输入表单填写。 有或没有Thread.Sleep(1000)这个表单将不会完全显示,它等待用户输入,我不能给...
答案 0 :(得分:4)
这看起来非常像是这样做的错误方法。我建议
不要在UI代码中引入Thread.Sleep,这会导致表单锁定并停止响应。
答案 1 :(得分:0)
我认为您可以使用链式选择语句来执行此操作,而不是从用户那里获取输入,您可以从下拉菜单中选择选项,根据所选选项,您可以在此处提供更多表格,我可以使用教程http://tutorialzine.com/2011/11/chained-ajax-selects-jquery/
答案 2 :(得分:0)
与此同时,我已经解决了我的问题,对其进行了测试并确实有效。
private void btn_Say_Click(object sender, EventArgs e)
{
string text = tbx_Say.Text;
tbx_Say.Text = "";
if (status == 0)
{
if (text.Contains("Add") || text.Contains("add"))
{
if (text.Contains("Task") || text.Contains("task"))
{
screen.btn_Tasks.PerformClick();
tbx_Anne.Text = "What should happen?";
status = 1;
}
}
}
else if (status == 1) // to do
{
if (text != "")
{
screen.task.tb_TaskToDo.Text = text;
tbx_Anne.Text = "On which date?";
status = 2;
}
}
else if (status == 2) // date
{
DateTime date;
if(DateTime.TryParse(text, new CultureInfo("nl-NL"), DateTimeStyles.None, out date))
{
screen.task.dateTimePickerTask.Value = date;
tbx_Anne.Text = "And what time?";
status = 3;
}
else
{
tbx_Anne.Text = "Please nter date as dd-mm-yyyy.";
}
}
else if (status == 3) // time
{
int h;
int m;
if(text.Length == 5 && Int32.TryParse(text.Substring(0,2), out h) && text[2] == ':' && Int32.TryParse(text.Substring(3), out m))
{
screen.task.tb_TimeTask.Text = text;
tbx_Anne.Text = "Do you want to add reminders?";
status = 4;
}
else
{
tbx_Anne.Text = "Please insert time as hh:mm.";
}
}
}