[英]DataGridView's UserDeletingRow method is called 3 times by itself
我使用DataGridView创建了新的Windows窗体应用程序。 这是它唯一的形式。 DataGridView1_UserDeletingRow方法中的MessageBox被调用3次。 我需要了解为什么会这样。 的明显的问题是数据源,因为添加行手动的dataGridView,方法不被不必要地称为3次。
我还发现如果我把这行代码
dataGridView1.RowsRemoved += new DataGridViewRowsRemovedEventHandler(DataGridView1_UserDeletingRow);
后
dataGridView1.DataSource = dt;
一切正常,并且不会调用DataGridView1_UserDeletingRow方法。
using System;
using System.Data;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void DataGridView1_UserDeletingRow(object sender, DataGridViewRowsRemovedEventArgs e)
{
MessageBox.Show(sender.ToString());
}
private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.RowsRemoved += new DataGridViewRowsRemovedEventHandler(DataGridView1_UserDeletingRow);
var dt = new DataTable("myTableName");
dt.Columns.Add("myColumnName");
dt.Rows.Add(new object[] { 123 });
dataGridView1.DataSource = dt;
}
}
}
谁能解释一下到底发生了什么?
嘿,我遇到了同样的问题,这就是我解决的方法:
protected override void OnUserDeletedRow(DataGridViewRowEventArgs e)
{
base.OnUserDeletedRow(e);
//You're code here
}
我在DataGridView函数OnUserDeletedRow上使用了覆盖(称为基本函数),并添加了要触发的代码。
此函数仅触发一次即可解决我的问题,您也可以覆盖其他函数来代替侦听事件。
祝好运。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.