我有一个数据绑定的DataGridView
。当添加新行并且用户按下Esc时,我想删除整行。我该怎么做?
当用户取消添加过程时,如何删除正在添加的DataGridView行?
如何删除当用户取消添加过程时正在添加的DataGridView行?
原标题:
问题回答
非常容易实际上
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数据绑定,否则无法以编程方式删除行。
如果您想从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()。
干杯
安德烈·卡尔鲁奇
除非 DataGridView
与支持更改通知和允许删除的 IBindingList
数据绑定,否则无法在编程上删除行。
相关问题
热门标签
- winforms
- combobox
- fogbugz
- java
- date
- internationalization
- asp.net
- iis
- url-rewriting
- urlrewriter
- c#
- enums
- ocaml
- haxe
- algorithm
- string
- viewstate
- .net
- c++
- c
- symbol-table
- mysql
- database
- postgresql
- licensing
- migration
- vb.net
- vb6
- declaration
- vb6-migration
- python
- psycopg2
- backup
- vmware
- virtualization
- gnu-screen
- authentication
- desktop
- excel
- xll
- cultureinfo
- regioninfo
- oracle
- client
- session
- download
- html
- virtual
- constructor
- scenarios
- perl
- full-text-search
- javascript
- ajax
- testing
- oop
- inheritance
- vim
- encapsulation
- information-hiding