首页 > 解决方案 > 带有文本框选择更改事件的“输入字符串格式不正确”

问题描述

private void txtdiscount_SelectionChanged(object sender, RoutedEventArgs e)
{
    try
    {
        string dis = txtdiscount.Text.ToString();
        double isid = double.Parse(dis);

        isid = isid + 10;

        MessageBox.Show(isid.ToString());

    }
    catch (Exception exp)
    {
        MessageBox.Show(exp.ToString());
    }
}

我想在文本框中输入(双精度类型),txtdiscount并且在文本框的SelectionChanged事件中,aMessageBox应该在其值增加 10 后显示输入的值。但是使用上面的代码,我得到一个例外:

“输入字符串格式不正确”

在线:

string dis = txtdiscount.Text.ToString()

文本框事件中的此代码有什么问题,SelectionChanged因为在按钮单击事件中执行相同的代码时可以正常工作?

 <TextBox  x:Name="txtdiscount" HorizontalAlignment="Left" Height="33" Margin="831,97,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="154" SelectionChanged="txtdiscount_SelectionChanged"/>

标签: c#wpftextboxformat

解决方案


使用Double.TryParse()& 而不是SelectionChanged使用TextChanged事件。

根据 MSDN

SelectionChanged :- 只要选择发生更改,就会发生此事件。不仅可以通过用户交互,还可以通过绑定以及其他设置值来更改选择。

TextChanged :- 如果通过编程修改或用户交互更改了 Text 属性,则会引发此事件。

 string dis = txtBox.Text;
 double isId;
 if (Double.TryParse(dis, out isId))
 {
      isId = isId + 10;
      MessageBox.Show(isId.ToString());
 }
 else
 {
    MessageBox.Show("Please Only enter Number");
 }

推荐阅读