WinForm中dataGridView的事件DataBindingComplete触发多次原因

dataGridView绑定datatable ,结果事件DataBindingComplete

经过测试发现 

  DataTable dt = new DataTable("joch");
            dt.Columns.Add("A");
            dt.Columns.Add("B");
            dt.Columns.Add("C");

            dt.Rows.Add(1, 1, 1);
            dt.Rows.Add(2, 2, 5);
            dt.Rows.Add(3, 3, 4);

  //this.dataGridView1.DataMember = dt.TableName;

//第二次会出错

  if (this.dataGridView1.DataSource ==null)
            {
                this.dataGridView1.DataMember = dt.TableName;
            }
  this.dataGridView1.DataSource = dt;

上面2行代码切记不可调换顺序. 

就可以避免触发多次.

原因可能是datasource绑定后或自动再次修改datamember的值 导致多次DataBindingComplete事件

WinForm,当点击DataGridView的特定按钮事件时,可以通过判断所点击的列是否为DataGridViewButtonColumn来执行相应的操作。可以使用以下代码来实现这个功能: ```csharp private void dataGridView2_CellClick(object sender, DataGridViewCellEventArgs e) { if (dataGridView2.Columns[e.ColumnIndex is DataGridViewButtonColumn && e.RowIndex >= 0) { // 在这里执行点击事件的逻辑 // 比如根据按钮所在行的数据进行相关的操作 } } ``` 另外,在WinForm绑定DataGridView的数据源可以使用DataTable。可以通过以下代码来实现: ```csharp DataTable dt = new DataTable("joch"); dt.Columns.Add("A"); dt.Columns.Add("B"); dt.Columns.Add("C"); dt.Rows.Add(1, 1, 1); dt.Rows.Add(2, 2, 5); dt.Rows.Add(3, 3, 4); dataGridView1.DataSource = dt; ``` 需要注意的是,在绑定数据源之前,要先设置DataGridViewDataMember属性为空。如果不这样做,可能会导致多次触发DataBindingComplete事件。所以可以按照以下顺序操作: ```csharp if (dataGridView1.DataSource == null) { dataGridView1.DataMember = dt.TableName; } dataGridView1.DataSource = dt; ``` 这样就可以避免多次触发DataBindingComplete事件。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [如何给WinFormdataGridView控件的表格添加按钮并添加点击事件](https://blog.csdn.net/Andrewniu/article/details/90698381)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [WinFormdataGridView事件DataBindingComplete触发多次原因](https://blog.csdn.net/jochzhu/article/details/79270302)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值