我有一个 DevExpress GridControl
,ContextMenuStrip
上面有 2 个项目。我希望能够右键单击 中的记录GridControl
并启动用户的默认浏览器并使用他们的默认搜索引擎和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。我希望为 0,因为在这个特定的测试中,我的网格中只有 1 行。
有没有不同的方法来实现这一目标?网格支持多选,所以我不想通过在右键单击时以编程方式选择行来“覆盖”他们的选择。
这是我要描述的屏幕截图: