C#WPF如何使用object sender的value清除调用代码的input-box中的value

C# WPF how to use value of object sender to clear value in the input-box which has evoked the code

我正在创建一个带有几个输入文本字段的 WPF 应用程序,如果输入仅包含数字和逗号(= 必须可以转换为双精度),则应检查输入,因此我编写了以下代码

private void txtBarauslagen_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Return || e.Key == Key.Tab)
    {
        string text = txtBarauslagen.Text;

        if (text != "") // nur wenn Feld nicht leer
        {
            try
            {
                double convtext = double.Parse(text);
                MessageBox.Show(convtext.ToString());
                // txtNotiz_int.Focus();
            }
            catch
            {
                MessageBox.Show("FALSCH - nicht nur Zahlen!");
                txtBarauslagen.Text = ""; 
                e.Handled = e.Key == Key.Tab;
            }
        }
    }
}

行“e.Handled = e.Key == Key.Tab;”是必要的,因为我在“LostFocus”中有代码,只有在“转换为双精度”是可能的情况下才应该执行。

我想知道是否可以更改行 "txtBarauslagen.Text = "";"这样就可以重构代码,以便我可以将相同的代码用于另一个输入文本字段。我已经尝试在 catch 语句中将其更改为“text.Text”,但这是不可能的(我真的不知道为什么)。

简而言之:我想知道是否可以检索例如“txtBarauslagen.Text”或对象“txtBarauslagen”(=我的输入文本字段)的值来自“对象发送者”。

由于发件人应该是引发该事件的 TextBox,只需将其转换为 TextBox 即可访问其 Text 属性.

TextBox tb = (TextBox)sender;

顺便说一句,如果我是你,我会改用double.TryParse方法。

这是修改后的代码,可以正常使用,谢谢

private void zeit1TextBox_PreviewKeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Return || e.Key == Key.Tab)
        {
            TextBox tb = (TextBox)sender;

            string TBSender = tb.Text;
            double standVal = 0;

            if (TBSender != "") // nur wenn Feld nicht leer
            {
                double.TryParse(TBSender, out standVal);

                if (standVal != 0)
                {
                    tb.Text = standVal.ToString();
                }
                else
                {
                    MessageBox.Show("Nur Eingabe von Zahlen möglich!");
                    tb.Text = "";
                    e.Handled = e.Key == Key.Tab; // verhindert dass Focus weiterspringt
                }
            }
        }
    }