C#Winformプロジェクト
私はcontextMenuを持つdataGridViewを持っています。簡単に言えば、必要がない場合でも(クリックしたときに)コンテキストメニューの選択がトリガーされることを除いて、すべてが希望どおりに機能しています。たとえば、dataGridViewを右クリックすると、選択内容が表示されます。これを選択すると、MouseClickイベントがトリガーされ、必要な処理が実行されます。しかし、クリックすると、MouseClickイベントがトリガーされます。
OnMouseUpイベントでいくつかの異なる方法で試しましたが、同じことが起こっています。以下のコードにいくつかの余分な「if」があります。これは基本的に、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.
}
}
クリックしたときにトリガーされないようにアプリケーションに指示するために何が欠けていますか?
ありがとう、
〜クリス