C# 当我将这行代码添加到组合框选择事件时,InitializeComponent返回一个空引用
我的初始化组件;当我将以下行添加到ComboBoxItem选择事件时,line返回错误:C# 当我将这行代码添加到组合框选择事件时,InitializeComponent返回一个空引用,c#,wpf,C#,Wpf,我的初始化组件;当我将以下行添加到ComboBoxItem选择事件时,line返回错误: namespace NewProject { public partial class Page1 : Page { public Page1 { InitializeComponent(); } private void ComboBoxItem_Selected_1(object sender, Ro
namespace NewProject
{
public partial class Page1 : Page
{
public Page1
{
InitializeComponent();
}
private void ComboBoxItem_Selected_1(object sender, RoutedEventArgs e) //same for ComboBoxItem_Selected_2,3
{
TextBlock_ComboBoxes.Text = ("Combo Box Number: 1");
}
}
}
我试图根据选择的ComboBoxItem更改TextBlock的文本
XAML代码:
<ComboBox FontFamily="Arial" Grid.ColumnSpan="2">
<ComboBoxItem Content="Combo Box Number 1" IsSelected="True" Selected="ComboBoxItem_Selected_1"/>
<ComboBoxItem Content="Combo Box Number 2" Selected="ComboBoxItem_Selected_2"/>
<ComboBoxItem Content="Combo Box Number 3" Selected="ComboBoxItem_Selected_3"/>
</ComboBox>
<TextBlock x:Name="TextBlock_ComboBoxes" Text="Combo Box Number: 1"/>
此Xaml代码包含在窗口框架内的页面中。以下是页面属性:
<Page x:Class="NewProject.Page1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="600"
Title="Page 1">
在初始化Component期间,可能会在初始化TextBlock_ComboBox字段之前触发SelectionChanged事件。您应该检查字段是否为空:
请注意,SelectionChanged事件可能在TextBlock_ComboBox字段初始化之前触发。检查它是否为空。@mjwills异常是这样的:System.NullReferenceException:“对象引用未设置为对象的实例”。@Clemens是的,它返回一个空错误,但我应该检查什么,使用非技术术语,因为我是编程新手。@mjwills我已经提供了您要求的代码来复制问题。我将查看此代码是否修复了我的程序。编辑:是的,成功了。非常感谢。是的,成功了!但是我仍然不明白为什么它首先是空的。所有与XAML中的x:Name声明相对应的字段都是由InitializeComponent初始化的,也就是说,在InitializeComponent设置它们之前,它们都是空的。当您的ComboBox在TextBlock之前以XAML声明,并且在初始化期间立即触发SelectionChanged处理程序时,TextBlock字段可能仍然为空。
private void ComboBoxItem_Selected_1(object sender, RoutedEventArgs e)
{
if (TextBlock_ComboBoxes != null)
{
TextBlock_ComboBoxes.Text = ("Combo Box Number: 1");
}
}