我有一个数据绑定DataGridView
。添加新行并且用户按 Esc 时,我想删除整行。我怎么能这样做?
答案 0 :(得分:5)
private void dataGridView1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)27)
{
if (dataGridView1.Rows.Count > 0)
{
dataGridView1.Rows.RemoveAt(dataGridView1.Rows.Count - 1);
MessageBox.Show("Last row deleted!");
}
e.Handled = true;
}
}
但请注意:
除非DataGridView数据绑定到支持更改通知并允许删除的IBindingList,否则无法以编程方式删除行
答案 1 :(得分:5)
如果要从DataGrid中删除行,则必须使用BindingSource而不是列表,否则在执行时会出现异常。
试试这个:
public partial class YourForm : Form {
private BindingSource _source = new BindingSource();
public YourForm() {
List<Model> list = _service.GetList();
_source.DataSource = list;
_grid.DataSource = _source;
}
}
现在您可以使用您的数据源,网格将自行运行。每次更改后都不要忘记调用_grid.Refresh()。
干杯,
安德烈·卡鲁奇答案 2 :(得分:-1)
除非DataGridView
数据绑定到支持更改通知并允许删除的IBindingList
,否则无法以编程方式删除行。