我有一个 Winforms
应用程序,它有一个 DataGridView
。
DataGridView
未绑定(bind)到数据源。我正在读取一个文本文件,并根据文件中的每一行,将每一行的值放入数据网格。
我的网格中有一列是 ComboBoxColumn
。它有一个项目集合。
我的目标是将单元格中显示的项目的索引保存到文件中。
但是,ComboBoxCell
似乎没有 ComboBox
那样的 SelectedIndex
属性。
值得一提的是,我需要知道只有当用户点击“保存”选项时显示的项目的索引,所以我不认为 editingControlShowing 事件是我的方式。
最佳答案
好吧,您几乎是正确的:为了找到选择的索引,您确实需要对EditingControlShowing
事件进行编码,只需使确保保留对编辑期间使用的 ComboBox
的引用:
// hook up the event somwhere:
dataGridView1.EditingControlShowing += dataGridView1_EditingControlShowing;
// keep a reference to the editing comtrol:
ComboBox combo = null;
// fill the reference, once it is valid:
void dataGridView1_EditingControlShowing(object sender,
DataGridViewEditingControlShowingEventArgs e)
{
combo = e.Control as ComboBox;
}
现在你可以使用它了:
private void Save_Click(object sender, EventArgs e)
{
int index = -1;
if (combo != null) index = combo.SelectedIndex;
// now do what you want..
}
请注意,这只是一个最小的示例。如果您的用户在按下“保存”按钮之前要编辑多个列和行,您将需要存储 ComboBoxes
,或者更便宜的 SelectedIndex
,也许在每个单元格的 CellEndEdit
事件中。 Cells 的 Tag
是明显的存储位置:
void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (combo != null)
dataGridView1[e.ColumnIndex, e.RowIndex].Tag = combo.SelectedIndex;
}
在此版本中,您显然将从 Tag
中检索索引,而不是从组合中检索索引..
当然你也可以像这样从 Value
中找到一个 Item
:
DataGridViewComboBoxCell dcc =
(DataGridViewComboBoxCell)dataGridView1[yourColumn, yourRow];
int index = dcc.Items.IndexOf(dcc.Value);
但这只会得到第一个拟合指数,而不是实际选择的指数..
关于c# - 获取 DatagridviewComboBoxCell 的 SelectedIndex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30157239/