从存储在DataGridViewCell中的Combobox中检索String值

时间:2016-12-20 17:55:31

标签: c# string datagridview combobox

在Combobox(单元格)编辑模式下输入密钥后,它不会获取当前输入的值:

这里的示例是我的代码:

  private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        if (e.Control is ComboBox)
        {
            ComboBox box = e.Control as ComboBox;
            box.DropDownStyle = ComboBoxStyle.DropDown;
            box.AutoCompleteSource = AutoCompleteSource.ListItems;
            box.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
        }

    }

  private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            string value = dataGridView1.Rows[0].Cells[0].Value.ToString();
            Column1.Items.Add(value.ToString());

        }

如果在其他不是组合框的单元格中使用相同的代码,那么它可以工作。为什么会这样?我收到此错误类型' System.NullReferenceException'的未处理异常

2 个答案:

答案 0 :(得分:0)

一些事情:

1

您为什么要尝试将string转换为string?显然是多余的。

value.ToString()

这绝对不需要发生。

2

您可能会收到null引用,因为您实际上从未在value变量中添加值。有几件事可能会解决这个问题。首先,我尝试以不同方式初始化它:

string value = dataGridView1.Rows[0].Cells[0].Value as String;

无论如何,只需在尝试放置null之前检查value即可避免此string value = dataGridView1.Rows[0].Cells[0].Value as String; if (value != null && value != "") Column1.Items.Add(value); 错误。总的来说,试试这个:

static-base-uri()

答案 1 :(得分:0)

public partial class myWindow : Window
{
    ComboBox cbCombo;                        //DECALRE HERE
    InitializeComponent();
    //Other stuff

    private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        if (e.Control is ComboBox)
        {
            cmCombo = e.Control as ComboBox;          //INITIALIZE HERE
            cmCombo.DropDownStyle = ComboBoxStyle.DropDown;
            cmCombo.AutoCompleteSource = AutoCompleteSource.ListItems;
            cmCombo.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
        }

    }

    private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            if (cbCombo != null) 
                string value = cbCombo.Value.ToString();
            if (value != null && value != "")
                Column1.Items.Add(value);
        }
    }
}

这就是我走的路。希望这有助于你获得它。否则,

https://msdn.microsoft.com/en-us/library/system.windows.forms.combobox(v=vs.110).aspx https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview(v=vs.110).aspx

我不知道如何帮助你。