我如何等待String返回值?

时间:2013-08-07 10:40:01

标签: c# asynchronous

我有一个程序使用KeyPress事件将新字符添加到新Label,有点像控制台应用程序。 我需要在我的程序中添加Input方法,所以当我按Enter而不是执行函数时,它会返回一个字符串。我试过让KeyPress事件返回一个字符串,但由于显而易见的原因它不起作用,我该如何使它工作?

注意:我的意思是“返回一个字符串”;

如果我要求Console等待输入,我仍然会使用KeyPress事件,但它会返回用户的字符串/输入。

我希望你理解我已编写的代码,注意它扩展到其他

我的KeyPress事件处理程序:

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == '\b') // Backspace
        {
            if (ll.Text != "_" && ActualText != "") // Are there any characters to remove?
            {
                ActualText = ll.Text.Substring(0, ActualText.Length - 1);
                ll.Text = ActualText + "_";
            }

        }
        else
            if (e.KeyChar == (char)13)
            {
                if (!inputmode)
                {
                    foreach (KeyValuePair<string, Action> cm in Base.Command())
                    {

                        if (ActualText == cm.Key)
                        {
                            print(ActualText);
                            cm.Value();

                        }
                    }
                }
                else
                {
                    inputmode = false;
                    lastInput = ActualText;
                    print("Input >> "+lastInput); 
                }
                ActualText = "";
                ll.Text = ActualText + "_";
            }
            else
            if (!Char.IsControl(e.KeyChar)) // Ignore control chars such as Enter.
            {
                ActualText = ActualText + e.KeyChar.ToString();
                ll.Text = ActualText + "_";
            }
    }

1 个答案:

答案 0 :(得分:2)

你的问题有点不清楚,但是如果我把它弄好了,那么解决方案是返回一个字符串,你显然不能在KeyPress事件中,提出你自己的事件,就像这样

public delegate void EnterPressedHndlr(string myString);

public partial class Form1 : Form
{
  public event EnterPressedHndlr EnterPressed;

  void Form1_KeyPress(object sender, KeyPressEventArgs e)
  {
     //your calculation
     if (EnterPressed != null)
     {
        EnterPressed("your data");
     }
  }
}