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;
}
}
}
誰が正確に何が起こっているのか説明できますか?