私は DevExpressGridControl
を持っています。これにはContextMenuStrip
2 つのアイテムがあります。GridControl
のレコードを右クリックして、ユーザーの既定のブラウザーを起動し、既定の検索エンジンを使用して の項目の 1 つを使用して用語を検索できるようにしたいと考えていますContextMenu
。
私のコード:
int rowX, rowY;
private void genericView_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
rowX = MousePosition.X;
rowY = MousePosition.Y;
}
}
private void tsmSearch_Click(object sender, EventArgs e)
{
int key = GetRowAt(gdcErrorLogDefaultView, rowX, rowY);
if (key < 0)
return;
string ex = gdcErrorLogDefaultView.GetRowCellValue(key, "Exception").ToString();
//Logic to launch browser & search for ex
}
public int GetRowAt(GridView view, int x, int y)
{
return view.CalcHitInfo(new Point(x, y)).RowHandle;
}
GetRowAt が行を適切に計算することはわかっています。コード内の他の多くの目的で使用しています。ただし、tsmSearch_Click イベントでキーを適切に取得していません。
テスト中if
に、Click イベントのステートメントにブレークポイントを設定しました。key
= -2147483648. この特定のテストでは、グリッドに 1 行しかないため、0 を期待しています。
これを達成する別の方法はありますか?グリッドは複数選択をサポートしているため、右クリックするとすぐにプログラムで行を選択して選択を「上書き」したくありません。
これが私が説明しようとしているもののスクリーンショットです: