我正在尝试获得一个事件,如果您在DataGridView
中单击鼠标左键,该单元格的内容将进入Textbox
。如果右键单击DataGridView
中的单元格,内容也将进入不同的Textbox
。这是我到目前为止的代码
private void dataGridView2_mirror_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
switch (MouseButtons)
{
case MouseButtons.Left:
textBox3.Text = dataGridView2_mirror.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
break;
case MouseButtons.Right:
textBox4.Text = dataGridView2_mirror.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
break;
}
}
我遇到的问题是,它无法识别正在单击的单元格,就像我将代码放入常规MouseEventArgs
中以向下按下鼠标一样,该代码将识别出它是否是右键单击或单击鼠标左键。
答案 0 :(得分:1)
我在下面提出了这个想法。另外,我认为最好使用CellMouseUp或CellMouseDown事件。
private void dataGridView2_mirror_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.Button.HasFlag(MouseButtons.Left))
{
textBox3.Text = dataGridView2_mirror.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
return;
}
if (e.Button.HasFlag(MouseButtons.Right))
{
textBox4.Text = dataGridView2_mirror.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
return;
}
}
答案 1 :(得分:0)
您不是要测试当前的按钮值,而是要枚举它自己,该枚举与if (1 == 1)
..((或更确切地说是None == some integer
)相同)>
最小的解决方法是更改为
switch (e.Button)
但是:MouseButtons是一个标志枚举,这意味着可以有多个值是正确的。养成只测试您实际想要的标志的习惯,并始终像这样测试它们:
e.Button.HasFlag(MouseButtons.Left)..
这使得使用switch
变得很困难,但是如此频繁且仅用两个按钮来识别switch
还是没有任何意义。