c# - 从未绑定(bind)列中的 DataGridViewComboBoxCell 获取选定索引和选定项

标签 c# .net winforms datagridview

我有一个大问题让我很困惑,我有一个 DataGridView,但没有使用具有 DataGridViewComboBoxColumn(未绑定(bind)列)的绑定(bind),我想在 ComBoBoxCell(我的项目或自定义项目)中获取选定的索引或选定的项目。

我尝试转换或关注此网站 ( http://satishjdotnet.blogspot.com/2009/05/getting-selected-value-of-combo-box-in.html ) 但我只收到错误:

"Value is not invalid"

.那么我该如何解决呢? 请帮我。多谢。 这是我在组合框中的自定义项目:

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);
}

最佳答案

给定 CustomItem 类,其值为 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;

        //...
    }
}

关于c# - 从未绑定(bind)列中的 DataGridViewComboBoxCell 获取选定索引和选定项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30282818/

相关文章:

c# - Winforms .NET 4.5 应用程序在新机器上崩溃

c# - 如何在 C# 中将 DataRow 转换为 DataRowView

c# - 从颜色中去除透明度

java - 在这个例子中,需要拆箱时是否使用装箱?

c# - 我怎样才能把一个进程句柄窗口放在前面,但在正常大小下不能最大化?

c# - .NET 返回不正确的用户名

c# - 如果我没有为 CSharpCodeProvider 指定 CompilerVersion 会发生什么,为什么大多数示例都指定了它?

c# - 如何从另一种形式改变背景图像?

c# - 将新对象实例分配给绑定(bind)变量时数据绑定(bind)不起作用

C# 对当前异步方法的反射(reflection)