我在几个地方有一个带有数据网格的 WinForms 应用程序。
在其中一个数据网格上,我为右键单击设置了一个事件,如下所示:
private void dataBundles_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
try
{
if (e.Button == MouseButtons.Right)
{
var cell = dataBundles.HitTest(e.X, e.Y);
int cellRow = cell.RowIndex;
DataTable table = (DataTable)dataBundles.DataSource;
string bundleID = table.Rows[cellRow]["BundleID"].ToString();
dataBundles.Rows[cellRow].DefaultCellStyle.BackColor = Color.Red;
if (MessageBox.Show("Are you sure you want to delete Bundle ID '" + bundleID + "'?",
"Confirm Delete Bundle", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
int intBundleID = Int32.Parse(bundleID);
cBundle bundle = new cBundle(intBundleID);
bundle.Delete();
PopulateDocumentsTab();
}
else
{
dataBundles.Rows[cellRow].DefaultCellStyle.BackColor = Color.White;
}
}
}
catch (Exception eX)
{
string eM = "Error occurred when right clicking the Bundles datagrid";
aError err = new aError(eX, eM);
MessageBox.Show(eX.Message, eM);
}
}
但是由于某种原因,无论我在哪里右键单击此数据网格,rowindex 总是返回一个 -1,这当然是“关闭”网格,因此会导致错误。
我看不出我做错了什么,因为我在同一个应用程序中的其他数据网格上使用了相同的代码来右键单击事件,它们都工作正常。
我敢肯定,无论我缺少什么,它都会变得很简单,但是我已经关注这段代码很长时间了。
有人可以让我摆脱痛苦吗?