- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 DataGridViewComboBoxColumn 上处理此事件“SelectedIndexChanged”,我将其设置在 gridview 的“EditingControlShowing”事件上。
问题:第一次尝试从组合框中选择项目时不会触发“SelectedIndexChanged”事件,但在第二次选择该项目后,该事件被触发并且一切正常!
这是代码:
private void dgvRequest_EditingControlShowing(object sender,
DataGridViewEditingControlShowingEventArgs e)
{
ComboBox combo = e.Control as ComboBox;
if (combo != null)
{
if (dgvRequest.CurrentCell.ColumnIndex == col_ConfirmCmb.Index)
{
combo.SelectedIndexChanged -= combo_ConfirmSelectionChange;
combo.SelectedIndexChanged += combo_ConfirmSelectionChange;
return;
}
}
}
void combo_ConfirmSelectionChange(object sender, EventArgs e)
{
if (dgvRequest.CurrentCell.ColumnIndex != col_ConfirmCmb.Index) return;
ComboBox combo = sender as ComboBox;
if (combo == null) return;
MessageBox.Show(combo.SelectedText);// returns Null for the first time
}
最佳答案
事情变得复杂,因为他们通过仅对所有行使用一个编辑控件来优化 DataGridView。以下是我处理类似情况的方法:
首先将委托(delegate)连接到 EditControlShowing 事件:
myGrid.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(
Grid_EditingControlShowing);
...
然后在处理程序中,连接到 EditControl 的 SelectedValueChanged 事件:
void Grid_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
ComboBox combo = e.Control as ComboBox;
if (combo != null)
{
// the event to handle combo changes
EventHandler comboDelegate = new EventHandler(
(cbSender, args) =>
{
DoSomeStuff();
});
// register the event with the editing control
combo.SelectedValueChanged += comboDelegate;
// since we don't want to add this event multiple times, when the
// editing control is hidden, we must remove the handler we added.
EventHandler visibilityDelegate = null;
visibilityDelegate = new EventHandler(
(visSender, args) =>
{
// remove the handlers when the editing control is
// no longer visible.
if ((visSender as Control).Visible == false)
{
combo.SelectedValueChanged -= comboDelegate;
visSender.VisibleChanged -= visibilityDelegate;
}
});
(sender as DataGridView).EditingControl.VisibleChanged +=
visibilityDelegate;
}
}
关于c# - Datagridview 上 ComboBoxColumn 中的 "SelectedIndexChanged"事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3405887/
我正在设置一个 DataGridViewComboBoxColumn像这样: var newColumn = new DataGridViewComboBoxColumn() { Name =
我正在尝试使用 C# 和 WinForms 在 Telerik RadGridView GridViewComboBoxColumn 中设置下拉窗口的宽度。但是我只找到了设置整列宽度的方法: fore
我想在 DataGridViewComboBoxColumn 上处理此事件“SelectedIndexChanged”,我将其设置在 gridview 的“EditingControlShowing”
我想在 DataGridViewComboBoxColumn 上处理此事件“SelectedIndexChanged”,我将其设置在 gridview 的“EditingControlShowing”
我有一个带有组合框列的数据 GridView 。此列是数据绑定(bind)的。我想根据列表中最大的项目宽度设置下拉列表的宽度。为了让普通的组合框达到同样的效果,我使用了一种扩展方法,该方法将通过查找列
为了解释我的问题,我做了一个小的演示应用程序。 我有一个带有多个 TextColumns 和一个 ComboBoxColumn 的 DataGrid - TextColumns 的绑定(bind)效果
我有两个简单的 Model 类和一个 ViewModel... public class GridItem { public string Name { get; set; } pub
我正在从两个表加载数据:机构和国家。 Institute 有 3 列:instId、name、countryId。国家/地区有 2 列:国家/地区 ID、名称,其中国家/地区 ID 是国家/地区表中的
请帮助我了解如何在 WPF 的 DataGrid 中使用 ComboBoxColumn。我正在尝试创建一个设备列表,其中每个设备在“日志”字段中都有动态状态列表。
我是一名优秀的程序员,十分优秀!