如何致电DataGrideEventHandler
ColumnHeaderMouseClick
在dataGridView_ColumnWidthChanged
事件处理程序?
private void dataGridView1_ColumnHeaderMouseClick(object sender,
DataGridViewCellMouseEventArgs e)
{
//some code
}
private void dataGridView1_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e)
{
dataGridView1_ColumnHeaderMouseClick(sender,e);//its not working
}
答案 0 :(得分:1)
如果你真的想这样做(因为它往往会成为意大利面条代码),那么你可以像这样传递null到ColumneHeaderMouseClick:
private void dataGridView1_ColumnHeaderMouseClick(object sender,
DataGridViewCellMouseEventArgs e)
{
//some code, but do not rely on e != null
}
private void dataGridView1_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e)
{
dataGridView1_ColumnHeaderMouseClick(sender, null);
}
但我建议尽可能多地从事件处理程序中提取代码到其他类,以避免在UI代码中出现紧密耦合。
答案 1 :(得分:0)
您可以使用它来触发事件:
dataGridView1_ColumnHeaderMouseClick(new object(), null);
您的代码因为您尝试传递其他类型而无法正常工作的原因。您传递的是DataGridViewColumnEventArgs
而不是DataGridViewCellMouseEventArgs
。
希望它有所帮助!
答案 2 :(得分:0)
有不同的签名,相同的sender
但不同的EventArgs
。所以你需要再次重写EventArgs
。
private void dataGridView1_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e)
{
var margs = new MouseEventArgs(MouseButtons, 1, MousePosition.X, MousePosition.Y, 0);
var args = new DataGridViewCellMouseEventArgs(e.Column.Index, 0, MousePosition.X, MousePosition.Y, margs);
dataGridView1_ColumnHeaderMouseClick(sender, args);
}