【发布时间】:2020-03-18 18:53:20
【问题描述】:
我正在从数据源填充组合框,并且当用户更改组合框中的选择时,我有代码。所以显然我不希望 SelectedIndexChanged 方法中的代码在表单加载时触发。
This SO question 得到了回答,提出了两件事:
1) 在将数据加载到组合框之前和之后使用此代码:
private void LoadYourComboBox()
{
this.comboBox1.SelectedIndexChanged -= new EventHandler(comboBox1_SelectedIndexChanged);
// Set your bindings here . . .
this.comboBox1.SelectedIndexChanged += new EventHandler(comboBox1_SelectedIndexChanged);
}
我用这段代码试过了:
this.cboSelectCategory.SelectedIndexChanged -= new EventHandler(cboSelectCategory_SelectedIndexChanged);
但是,cboSelectCategory_SelectedIndexChanged 部分有一个红色的错误,并且悬停在上面显示:The name cboSelectCategory_SelectedIndexChanged does not exist in the current context。我在 form_load 和实际填充组合框的方法中都尝试了该代码。
2) 同一个 SO 问题的答案是使用事件 SelectedIndexChangeCommitted。
private void cboSelectCompany_SelectedIndexChangeCommitted(object sender, EventArgs e)
{
string selectedCat = cboSelectCategory.SelectedValue.ToString();
Console.WriteLine(selectedCat);
}
但是当我更改组合框中的选择时,该事件没有触发。
我是否在某处遗漏了什么?我的代码是关闭了还是放错了地方?
【问题讨论】:
-
您的代码中是否有一个名为
cboSelectCategory_SelectedIndexChanged的方法? -
@LarsTech - 我添加了事件,在表单加载事件中添加了删除/添加事件的代码,并将其添加到 SelectedIndexChanged 事件中:
Console.WriteLine("This shouldn't fire on form load");该事件在表单加载时触发了 - 但是没有错误。 -
也许如果您向我们展示您的代码而不是来自另一个 SO 问题的代码,我们可能会提供更多帮助!
-
@Caius & LarsTech - 对不起,伙计们 - 我不知道我做错了什么/不同,但现在添加 SelectedIndexChanged 事件被阻止在表单加载时触发,因此它可以根据需要工作。是星期一吗??
-
SelectedIndexChangeCommitted(在标题中)是SelectedIndexChanged和SelectionChangeCommitted的奇怪组合。后一个事件仅在您手动更改项目时引发,而在您填写列表并且索引可能设置为-1(您可以订阅前一个事件时总是检查)
标签: c# winforms combobox event-handling