在selectionChanged事件中未处理的nullreference异常

时间:2014-04-01 18:55:49

标签: c# xaml

我有两个名为txtChangetxtStatus的文本框。 XAML代码如下。

<TextBox Height="29" HorizontalAlignment="Left" Margin="418,385,0,0" Name="txtChange" VerticalAlignment="Top" Width="264" Text="Make a selection in this textbox" SelectionChanged="txtChange_SelectionChanged" />
<TextBox Height="87" HorizontalAlignment="Left" Margin="418,438,0,0" Name="txtStatus" VerticalAlignment="Top" Width="264" Text="Initialized text" IsReadOnly="True"/>

现在我为一个文本框定义了一个selectionChanged事件:

private void txtChange_SelectionChanged(object sender, RoutedEventArgs e)
{
    TextBox txt2 = sender as TextBox;
    txtStatus.Text = "Selection is " + txt2.SelectedText + "";
}

enter image description here

有人可以解释一下发生了什么吗?我在MainWindow构造函数中只有InitializeComponent();


编辑:当我没有在XAML中初始化Text时,问题得到解决。知道为什么吗?

2 个答案:

答案 0 :(得分:0)

问题出在event SelectionChanged中,这是在初始化时引发的。初始化TextBox txtChange并为Text属性分配引发的事件时,我们在txtStatus中获得空引用异常,因为它仍未初始化。 InitializeComponent();初始化您的UI,您可以在Obj \ Debug | Release文件夹文件中找到MainWindow.g.cs和MainWindow.i.cs文件,其中包含自动生成的InitializeComponent();代码。

答案 1 :(得分:0)

如果您希望第二个TextBox显示第一个TextBox的文本,请使用以下XAML

<TextBlock Height="87" HorizontalAlignment="Left" Margin="418,438,0,0" Name="txtStatus" VerticalAlignment="Top" Width="264" Text="{Binding SelectedText, ElementName=txtChange}"/>

请注意,我已将TextBox更改为TextBlock,并且我将文本绑定到文本框的SelectedText