![](/img/trans.png)
[英]c# getting NullReferenceException when retrieving data from a cell in DataGridView
[英]What Causes this NullReferenceException when Accessing a Cell of a DataGridView?
我有一個DataGridView
控件,正在檢查是否獲得了column 0
的正確值
但是當我單擊按鈕以回顯值時,我總是會收到此錯誤...
我的代碼中有錯誤嗎? 要不然是啥?
當datagridview最初與數據綁定,並且您沒有單擊任何行,任何單元格或datagridview時,CurrentRow.Index屬性不會設置為“可見”所選行。 但是,當您遍歷每一行時,您會發現dgView.Rows [?]。Selected已設置為true或false。 您可以使用try catch創建一個方法,以在獲取CurrentRow.Index的屬性時捕獲異常。 請嘗試以下代碼。
try
{
MessageBox.Show(dgView1[0,dgView1.CurrentRow.Index].Value.ToString());
}
catch
{
for (int i = 0; i < dgView1.Rows.Count; i++)
{
if (dgView1.Rows[i].Selected)
{
MessageBox.Show(dgView1[0,dgView1.Rows[i].Index].Value.ToString());
return;
}
}
}
將您的long / compound語句分解為幾行/語句:
我認為最可能的原因是,當您單擊按鈕時,表單的焦點位於第二行(帶*的行),直到您單擊並在該行的單元格中輸入內容后,該行才對其進行引用。 ,則會自動生成帶有*的另一行)。 如果您不希望自動生成行,只需將dataGridView1.AllowUserToAddRows
設置為false。
我剛剛創建了一個新項目,但它確實起作用了……很奇怪。
嘗試更換
dgView.CurrentRow.Index
與dgView.SelectedRows[0].Index
和屬性設置Multiselect
到False
, SelectionMode
= FullRowSelect
有幫助嗎? :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.