0

DataGridView で新しい Windows フォーム アプリケーションを作成しました。この形しかありません。DataGridView1_UserDeletingRow メソッドの MessageBox が 3 回呼び出されます。それがなぜなのかを理解する必要があります。明らかな問題は DataSource です。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;
        }
    }
}

誰が正確に何が起こっているのか説明できますか?

4

1 に答える 1