我正在開發一個專案,在該專案中我使用帶有 datagridview 的文本框,其中只要我在文本框中鍵入一些內容,datagridview 就會從不可見狀態變為可見,并開始根據我的擊鍵向我提供建議。代碼寫在下面。
private void txtUserTypes_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Up:
int rpos = dgvUserTypes.CurrentCell.RowIndex;
int cpos = dgvUserTypes.CurrentCell.ColumnIndex;
rpos--;
if (rpos >= 0) dgvUserTypes.CurrentCell = dgvUserTypes.Rows[rpos].Cells[cpos];
e.Handled = true;
break;
case Keys.Down:
int rpos1 = dgvUserTypes.CurrentCell.RowIndex;
int cpos1 = dgvUserTypes.CurrentCell.ColumnIndex;
rpos1 ;
if (rpos1 < dgvUserTypes.Rows.Count) dgvUserTypes.CurrentCell = dgvUserTypes.Rows[rpos1].Cells[cpos1];
e.Handled = true;
break;
}
}
private void txtUserTypes_TextChanged(object sender, EventArgs e)
{
try
{
if(txtUserTypes.Text.Length >0)
{
dgvUserTypes.Visible = true;
ViewSearch(txtUserTypes.Text);
}
else
{
dgvUserTypes.Visible = false;
}
}
catch
{
}
}
問題是,只要我按下鍵盤上的“向上”鍵,程式就會崩潰并出現例外“System.NullReferenceException:'物件參考未設定為物件的實體。'
System.Windows.Forms.DataGridView.CurrentCell.get returns null兩次宣告的變數(即 rpos 和 rpos1)基本上都在做同樣的事情。
uj5u.com熱心網友回復:
如果沒有運行樣本,我會建議一些簡單的東西,比如......
private void txtUserTypes_KeyDown(object sender, KeyEventArgs e)
{
if (dgvUserTypes.CurrentCell == null) return;
int rpos = dgvUserTypes.CurrentCell.RowIndex;
int cpos = dgvUserTypes.CurrentCell.ColumnIndex;
switch (e.KeyCode)
{
case Keys.Up:
rpos--;
if (rpos >= 0) dgvUserTypes.CurrentCell = dgvUserTypes.Rows[rpos].Cells[cpos];
e.Handled = true;
break;
case Keys.Down:
rpos ;
if (rpos < dgvUserTypes.Rows.Count) dgvUserTypes.CurrentCell = dgvUserTypes.Rows[rpos].Cells[cpos];
e.Handled = true;
break;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/332902.html
