从文本框发送输入



我在我的C#WPF项目上有一个文本框,我希望它在我按Enter时将输入的值发送到文本框中,以将其发送到一个变量中。

我的用户输入文本框必须在单独的函数中,还是可以将其放在我想要将值发送到的相同函数中?

    private void UserInput(object sender, KeyEventArgs e)
    {
        Point p1 = new Point();
        TextBox textBoxX = new TextBox();
        if (e.Key == Key.Enter)
        {
            double inputAsNumberX = 0.0000;
            if (double.TryParse(textBoxX.Text, out inputAsNumberX))
            {
                p1.X = inputAsNumberX;
            }
            else
            {
                MessageBox.Show("This is not a number.");
            }
        }
        else
        {
        }
        double inputAsNumberY = 0;
        TextBox textBoxY = sender as TextBox;
        while (textBoxY.Text == null)
        {
            //textBoxY = sender as TextBox;
        }
        if (double.TryParse(textBoxY.Text, out inputAsNumberY) == true)
        {
            p1.X = inputAsNumberY;
        }
        else
        {
            MessageBox.Show("This is not a number.");
        }

    } 

XAML代码

<TextBox Name="TextBoxX" TextWrapping="Wrap" MaxLength="32" KeyDown="UserInput" />

更新:我有一个奇怪的问题是,当我尝试输入任何内容(在调试时)时,它会阻止我输入任何内容。运行该代码并尝试再次输入后,它允许我输入一个字符(如一个数字),然后阻止我输入更多。

似乎也仅显示在代码运行后在文本框中键入的新字符。

我如何修复我的代码以运行我想要的方式,即输入值,按Enter,值发送到函数,将其设置为double变量:inputasnumberx ???

更新2:我已经更新了我正在使用的代码。我正在尝试获得两个输入,因此我设置了两个文本框。两者都应该做与我上面问的相同的事情。

据我了解,

您已经将用户input函数设置为文本框上KeyDown EventHandler的处理程序。这意味着,每次您按使用文本框的键时,都会调用UserInput函数。如果您只想在按下" Enter"时解析文本框的内容,则可以将代码更改为以下内容:

private void UserInput(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {
        var textBox = sender as TextBox;
        if (textBox != null)
        {
            double inputAsNumberX = 0;
            if (double.TryParse(textBox.Text, out inputAsNumberX))
            {
                // Do something with inputAsNumberX here.
            }
            else
            {
                MessageBox.Show("This is not a number.");
            }
        }
    }
}

请注意,我首先检查" Enter"是否按下。

更新:

我更改了上面的代码,以便使用UserInput作为KeyDown事件的事件处理程序,可用于任何文本框。为您的两个文本框使用以下XAML:

<TextBox Name="TextBoxX" TextWrapping="Wrap" MaxLength="32" KeyDown="UserInput" />
<TextBox Name="TextBoxY" TextWrapping="Wrap" MaxLength="32" KeyDown="UserInput" />

相关内容

  • 没有找到相关文章