在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'的未处理异常
答案 0 :(得分:0)
一些事情:
您为什么要尝试将string
转换为string
?显然是多余的。
value.ToString()
这绝对不需要发生。
您可能会收到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
我不知道如何帮助你。