簡體   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