我有一個WinForms應用程序在幾個地方有datagrids。DataGrid上的右鍵總是返回RowIndex -1
在我設置了一個事件右鍵點擊如下DataGrid中的一個:
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這當然是'關閉'電網,因此導致錯誤。
我看不到我做了什麼錯了,因爲我已經使用其他DataGrid中右鍵單擊事件相同的代碼相同的應用程序中,他們都做工精細。
我敢肯定,無論我錯過什麼,它都會變得簡單,但我現在已經在這段代碼中主演了很長一段時間。
有人能讓我擺脫苦難嗎?
我有同樣的問題一次,我沒有解決這個問題,但他發現,我通常會得到2調用我的回調函數。第一個是行索引= -1,第二個是有效的。我用一個簡單的If語句解決了它。你有沒有檢查是否收到多個電話? – Nitay