所以我的代码给了我一个TargetInvocationException
link to screenshot of exception details
这是我的代码
public partial class MainWindow
{
Double totalPrice = 0;
public MainWindow()
{
InitializeComponent();
}
private void txtDiscount_SelectionChanged(object sender, RoutedEventArgs e)
{
Double newTotalPrice = 0;
if (!String.IsNullOrEmpty(txtDiscount.Text))
{
newTotalPrice = totalPrice - Double.Parse(txtDiscount.Text);
}
txtFullAmount.Text = newTotalPrice.ToString();
}
最后一行是让它崩溃的那一行,我试图指定一个文本框,以便在不同的文本框发生变化时进行更改。
有趣的是,如果我更改标题
,这将完美无缺this.Title = newTotalPrice.ToString();
编辑:如果与按钮一起使用,我的原始代码也可以使用。
修改<TextBox Background="#ecf0f1" IsReadOnly="True" Text="" Name="txtFullAmount" SelectionChanged="txtDiscount_SelectionChanged" HorizontalAlignment="Left" Height="23" Margin="505,511,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="85"/>
答案 0 :(得分:0)
我认为您在XAML中设置了SelectedIndex
。在这种情况下,在完全初始化窗口之前引发SelectionChanged
事件。在初始化之前,控件的成员变量始终为null
。
最简单的方法是检查TextBox是否存在,如果是null
则返回:
private void txtDiscount_SelectionChanged(object sender, RoutedEventArgs e)
{
if(txtFullAmount == null) return;
//your code
}
Title
的作业有效,因为此时已存在this
。