C# wpf combobox控件,提示未将对象引用设置到对象的实例。

界面上有combobox和textbox两个控件,我想让combobox选项发生变化时textbox的值能相应变化。我在xaml中设置combobox的默认选项,用了<C... 界面上有combobox和textbox两个控件,我想让combobox选项发生变化时textbox的值能相应变化。我在xaml中设置combobox的默认选项,用了<ComboBoxItem IsSelected="True">胜</ComboBoxItem>,加了isselected这个属性后,下面语句运行就报错,去掉isselected属性就正确,请问这是为什么,怎么解决
private void selectionchanged(object sender, SelectionChangedEventArgs e)
{
textBox1.Text = "1";
}
展开
 我来答
khlerc
2012-11-05 · TA获得超过420个赞
知道小有建树答主
回答量:485
采纳率:0%
帮助的人:270万
展开全部
因为程序在启动时需要解释xaml,按照xaml中的顺序生成控件,先布局的先生成,而当生成combobox并且设置isselected属性时也要调你的selectionchanged()处理函数,而此时textBox1还没生成。
你只要把textBox1放在combobox之前就行了。
Raiuy
2012-11-05 · TA获得超过2916个赞
知道大有可为答主
回答量:2210
采纳率:0%
帮助的人:882万
展开全部
添加一个判断即可

if (this.IsLoaded)
{
TextBox1.Text = "a";
}
追问
谢谢,请问这是什么原理,是说切换选项时所有要实现的功能都要在这个if里面写吗
追答
不是,由于你设置了IsSelected,所以在程序一开始,就会引发selectionchanged处理函数。而这时候TextBox1可能还没有初始化完成,所以会出现问题。

加入这个判断,则当初始化还没完成的时候,不会执行TextBox1.Text = "a";也就不会出问题了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式