等待表单上的用户输入

时间:2012-05-02 13:37:21

标签: c# winforms user-input

我目前正在制定一个应该通过单独的输入表格控制的议程。

在此表单上,我需要等待用户输入才能移动下一个输入字段。

以下是添加任务的待办事项字段的条目。 之后,它还有日期,时间和提醒字段。

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)这个表单将不会完全显示,它等待用户输入,我不能给...

3 个答案:

答案 0 :(得分:4)

这看起来非常像是这样做的错误方法。我建议

  1. 使用已禁用的“确定”按钮和启用的“取消”按钮
  2. 创建一个弹出的表单
  3. 禁用第一个控件栏。
  4. 在文本更改上添加一个事件,在第一个文本框中启用下一个控件(进行适当的验证)。
  5. 对所有控件重复步骤3.
  6. 不要在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.";
            }
        }
    }