【问题标题】:Combobox selected index changed event not fired in code组合框选择的索引更改事件未在代码中触发
【发布时间】:2013-10-15 11:38:40
【问题描述】:

我正在开发一个 Windows 窗体应用程序,并且我有一个名为 cmbCountry 的组合框。我将此组合框绑定到一个包含国家名称的列表。以下是填充组合框的代码。

cmbCountry.DataSource = lstcountry;

接下来我想将选中的项目设置为“United States of America”。所以我添加了以下代码

cmbCountry.SelectedItem="United States of America";

我想对这个组合框的选择更改事件做一些代码。

private void cmbCountry_SelectionChangeCommitted(object sender, EventArgs e)
{
    \\some code
}

这个方法应该在我设置选中项时被调用。但它没有被调用。但是,当我从 UI 部分(设计部分)中选择“United States of America”时,会调用此事件。我想在设置所选项目时调用此事件。

【问题讨论】:

  • 发布您如何绑定数据。什么是lstcountry
  • 如果你想从代码中触发事件,为什么不直接调用事件呢?
  • 为什么不SelectedIndexChanged
  • 这段代码 sn-p 是否工作 cmbCountry.SelectedItem="United States of America";,即 selectedItem 是否发生变化?

标签: c# winforms


【解决方案1】:

SelectionChangeCommitted 在用户通过 UI 进行操作时触发。

SelectionChangeCommitted 仅在用户更改 组合框选择。不要使用 SelectedIndexChanged 或 SelectedValueChanged 来捕获用户更改,因为这些事件是 also raised when the selection changes programmatically.

http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selectionchangecommitted.aspx

使用 SelectedIndexChanged 或 SelectedValueChanged

【讨论】:

  • 感谢您的回答。现在我清除了关于组合框的 selectionchanged 事件和 selectionchangecommitted 事件的概念。再次感谢。
【解决方案2】:

将您的活动更改为SelectedIndexChanged

private void cmbCountry_SelectedIndexChanged(object sender, EventArgs e)
    {
        \\some code
    }

并更改事件处理程序(可能会自动生成):

this.cmbCountry.SelectedIndexChanged += new System.EventHandler(this.lstResults_SelectedIndexChanged);

【讨论】:

  • 重命名函数不会做任何事情。需要更改处理程序以处理正确的事件。
  • @pinkfloydx33 非常真实!谢谢。
猜你喜欢
  • 1970-01-01
  • 2019-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多