我已将DataGridViewComboBox
添加到绑定DataGridView
(grdBOOK
),DataGridViewComboBox
将替换第3列以允许用户选择。我很难将DataGridViewComboBox
的默认值设置为等于第3列的值,因此如果值正确,则不需要用户选择。
我从net中删除了以下代码,但是我收到了错误消息:
DataGridViewComboBoxCell值无效。
我认为ComboBox
单元格可以被视为普通DataGridView
单元格,但是(请参阅下面的代码)在将字符串添加到ComboBox
列时会生成错误?我已经在网上搜索了几天但没有任何作用,有什么建议吗?
public void BOOK_COMBO2()
{
DataGridViewComboBoxCell cb_cell = new DataGridViewComboBoxCell();
DataGridViewComboBoxColumn cb_col = new DataGridViewComboBoxColumn();
// Contract field
cb_col.Items.AddRange("YEARLY", "MONTHLY", "");
cb_col.FlatStyle = FlatStyle.Flat;
cb_col.HeaderText = "newCONTRACT";
cb_col.Width = 50;
cb_col.ValueType = typeof(string);
// Add ComboBox and test
grdBOOK.Columns.Insert(5, cb_col);
grdBOOK.Rows[14].Cells[4].Value = "zzz"; // No error adding string to normal dgv column
grdBOOK.Rows[14].Cells[5].Value = "xxx"; // Error adding string to dgvcombobx column
//copy old values to new combobox and set as default
foreach (DataGridViewRow item in grdBOOK.Rows)
{
item.Cells[5].Value = item.Cells[3].Value;
}
//hide original column
grdBOOK.Columns[3].Visible = false;
}
答案 0 :(得分:0)
经过对网络的更多研究,使用ContextMenuStrip
的恕我直言是实现这一目标的更好方法。链接here。 ContextMenuStrip
有更好的方法,事件,属性等。我希望这有助于其他人寻找解决方案。
答案 1 :(得分:0)
private void dataGridView1_DataError(object sender,
DataGridViewDataErrorEventArgs e)
{
// If the data source raises an exception when a cell value is
// commited, display an error message.
if (e.Exception != null &&
e.Context == DataGridViewDataErrorContexts.Commit)
{
MessageBox.Show("");
}
}
private void Form1_Load(object sender, EventArgs e)
{ dataGridView1.DataError +=
dataGridView1_DataError;}