【发布时间】:2013-11-12 00:02:04
【问题描述】:
我有一个 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 事件中正确获取密钥。
在测试时,我在 Click 事件中的 if 语句上设置了一个断点。 key = -2147483648。我希望为 0,因为在这个特定的测试中,我的网格中只有 1 行。
有没有不同的方法来实现这一点?网格支持多选,所以我不想在他们右击时以编程方式选择行来“覆盖”他们的选择。
这是我要描述的内容的屏幕截图:
【问题讨论】:
标签: c# winforms .net-3.5 devexpress gridcontrol