我遇到了问题,当窗口加载时,与'组合框'控件关联的'selection_change'事件会在窗口第一次加载时被触发。为什么会出现?如何限制它?
此致
答案 0 :(得分:2)
使用该代码,SelectionChanged
事件不会被引发。创建一个新项目,粘贴并亲自尝试。
我的猜测与 Sekhar _ Pro 的几乎相同,你从后面的代码填充你的ComboBox
,其中有什么原因导致要更改的SelectedItem。
调查cmbUsers.SelectedItem
事件处理程序中的cmbUsers_SelectionChanged
以查看它是否在调试器中具有某个值或为null。另外,查看调用堆栈以查找导致此事件被引发的原因。
示例代码
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
cmbUsers.Items.Add(new ComboBoxItem { Content = "Test" });
cmbUsers.SelectedIndex = 0;
}
private void cmbUsers_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (cmbUsers.SelectedItem != null)
{
MessageBox.Show(cmbUsers.SelectedItem.ToString());
}
}
}
在事件处理程序
中,调用堆栈对我来说是这样的
答案 1 :(得分:0)
这不是一个正常的行为,有些你必须做的事情,比如设置SelectedItem等,这反过来又会触发事件。检查表单的生命周期事件,看看你是否正在做这样的事情,可能是在加载或激活事件或构造函数中的某个地方。