0

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" />

更新:私が質問している奇妙なことは、(デバッグ中に)何かを入力しようとすると、何も入力できなくなることです。コードを実行し、もう一度入力しようとすると、1文字(数字など)を入力できるようになり、それ以上入力できなくなります。

また、コードの実行後にテキストボックスに入力された新しい文字のみが表示されるようです。

コードを修正して、値を入力し、Enterキーを押すと、値が関数に送信され、double変数に設定されます。inputAsNumberX???

更新2:使用しているコードで更新しました。2つの入力を取得しようとしているので、2つのテキストボックスを設定します。どちらも私が上で尋ねたのと同じことをするはずです。

4

1 に答える 1

0

私が理解している限り、テキストボックスのイベントハンドラーのハンドラーとしてUserInput関数を設定しましたKeyDown。これは、テキストボックスが選択された状態でキーを押すたびに、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ました。2つのテキストボックスに次のXAMLを使用します。

<TextBox Name="TextBoxX" TextWrapping="Wrap" MaxLength="32" KeyDown="UserInput" />
<TextBox Name="TextBoxY" TextWrapping="Wrap" MaxLength="32" KeyDown="UserInput" />
于 2012-12-21T10:14:35.900 に答える