从未绑定列中的 DataGridViewComboBoxCell 获取选定索引和选定项
Posted
技术标签:
【中文标题】从未绑定列中的 DataGridViewComboBoxCell 获取选定索引和选定项【英文标题】:Get Selected index and Selected item from DataGridViewComboBoxCell in unbound column 【发布时间】:2015-05-17 02:42:10 【问题描述】:我有一个大问题让我很困惑,我有一个 DataGridView 没有使用具有 DataGridViewComboBoxColumn(未绑定列)的绑定,我想在 ComBoBoxCell 中获取选定的索引或选定的项目(我的项目是自定义项目)。
我尝试投射或关注此网站 (http://satishjdotnet.blogspot.com/2009/05/getting-selected-value-of-combo-box-in.html) 但我只收到错误:
“值不是无效的”
。那么我该如何解决呢? 请帮我。非常感谢。 这是我在组合框中的自定义项目:
public class CustomItem
public string Text get; set;
public object Value get; set;
public override string ToString()
return Text;
public CustomItem(string text, object value)
this.Text = text;
this.Value = value;
以及如何将其添加到 DataGridViewComboBoxColumn:
List<CustomItem> teamItem = new List<CustomItem>();
teamItem.Add(new CustomItem(this._homeTeam["Name"].ToString(), Convert.ToInt32(this._homeTeam["Id"])));
teamItem.Add(new CustomItem(this._awayTeam["Name"].ToString(), Convert.ToInt32(this._awayTeam["Id"])));
foreach (CustomItem i in teamItem)
((DataGridViewComboBoxColumn)this.dataGridViewGoalInformation.Columns["Team"]).Items.Add(i);
【问题讨论】:
DataGridViewComboBoxCell c = new DataGridViewComboBoxCell(); c = DataGridView1.Rows(0).Cells("MyColumnName"); c.Items.Add("Item1") @CarlProthman 正如我所说,我想在我的组合框单元格中获取选定的索引或选定的项目。我也在代码中展示了我的 CustomItem。你对我有什么想法吗? 抱歉,误读了您的问题。看看这个答案...***.com/questions/4732263/… 但是我必须在 datagridview 中捕获什么事件? 您可以在点击按钮时访问它(例如 SaveButton)。然后访问控件的选定值。 【参考方案1】:给定 CustomItem 类,其 Value 为 int
public class CustomItem
public string Text get; set;
public int Value get; set;
public override string ToString()
return Text;
public CustomItem(string text, int value)
this.Text = text;
this.Value = value;
要获取值,请确保连接事件:EditingControlShowing
dataGridView1.EditingControlShowing += dataGridView1_EditingControlShowing;
然后在组合框发生变化时从组合框中获取值:1)获取组合框控件,2)然后获取它的选定值:
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
if (dataGridView1.CurrentCell.ColumnIndex == 0 && e.Control is ComboBox)
ComboBox comboBox = e.Control as ComboBox;
comboBox.SelectedIndexChanged += ComboBox_SelectedIndexChanged;
private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
DataGridViewComboBoxEditingControl dataGridViewComboBoxEditingControl = sender as DataGridViewComboBoxEditingControl;
object value = dataGridViewComboBoxEditingControl.SelectedValue;
if (value != null)
int intValue = (int)dataGridViewComboBoxEditingControl.SelectedValue;
//...
【讨论】:
我无法使用dataGridViewComboBoxEditingControl.SelectedValue
获取选定的值,但我能够使用dataGridViewComboBoxEditingControl.Items[dataGridViewComboBoxEditingControl.SelectedIndex]
获取选定的值。以上是关于从未绑定列中的 DataGridViewComboBoxCell 获取选定索引和选定项的主要内容,如果未能解决你的问题,请参考以下文章
Springboot jpa:实体无法绑定不在表列中的自定义查询中的数据