繁体   English   中英

单独调用DataGridView的UserDeletingRow方法3次

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM