C# Winform 项目
我有一个带有 contextMenu 的 dataGridView。简单地说,一切都按我的意愿工作,除了上下文菜单选择触发,即使我不想要它(当我点击离开时)。例如,我右键单击我的 dataGridView 我看到了我的选择。如果我选择它,它会触发 MouseClick 事件并执行我想要的操作。但是如果我点击它,它仍然会触发 MouseClick 事件。
我在 OnMouseUp 事件中以几种不同的方式进行了尝试,但同样的情况正在发生。您会在下面的代码中注意到一些额外的“如果”,这基本上是我尝试了一些事情来让 MouseClick 不必要地触发(尽管最后我相信它只是在做多余的工作)。
在下面的代码中,请注意以下内容: MessageBox.Show("这里出了点问题!");
代码:
private void dgvMyDataGridView_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
currentMouseOverCol = dgvMyDataGridView.HitTest(e.X, e.Y).ColumnIndex;
currentMouseOverRow = dgvMyDataGridView.HitTest(e.X, e.Y).RowIndex;
ContextMenu m = new ContextMenu();
if (currentMouseOverRow >= 0 && currentMouseOverCol == 1)
{
dgvMyDataGridView.CurrentRow.Cells[0].Value.ToString())));
m.MenuItems.Add(new MenuItem(string.Format("Do something with this row")));
}
m.Show(dgvMyDataGridView, new Point(e.X, e.Y));
}
DataGridView.HitTestInfo hitTestInfo;
hitTestInfo = dgvMyDataGridView.HitTest(e.X, e.Y);
if (hitTestInfo.Type == DataGridViewHitTestType.Cell && hitTestInfo.ColumnIndex == 1 && currentMouseOverRow >= 0 && currentMouseOverCol == 1)
{
MessageBox.Show("something goes wrong here!");
// Code to open a new form page - this all works.
}
}
当我点击离开时,我错过了什么告诉我的应用程序不触发?
谢谢,
〜克里斯