1
在只能接受數字的gridview中有一個文本框類型列「數量」。代碼工作良好,但只能從第二個輸入。我只想在這裏使用keydown。事件僅從第二次觸發
private void GridViewSale_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (GridViewSale.CurrentCell.ColumnIndex == 4) //Allow only numbers for QTY column
{
TextBox Qty = e.Control as TextBox;
Qty.KeyDown += new KeyEventHandler(Qty_KeyDown);
}
}
void Qty_KeyDown(object sender, KeyEventArgs e)
{
if ((e.KeyValue >= 48 && e.KeyValue <= 57) || (e.KeyValue >= 96 && e.KeyValue <= 105)//Allows numerics
e.SuppressKeyPress = false;
else
e.SuppressKeyPress = true;
}
1.我應該在form_load ..等其他地方調用事件處理函數來處理每個輸入嗎?
2.如果我必須禁用修改器輸入(SHIFT + 1,SHIFT + 2),那麼我應該如何在此編碼?
一個問題,我覺得是要添加。事件處理程序每次都是壞的,你應該在添加之前首先刪除處理程序,或者先檢查null。 – nawfal 2013-03-20 16:25:29
試過但沒有運氣.. Qty.KeyDown - = Qty_KeyDown; Qty.KeyDown + = Qty_KeyDown; – Ruby 2013-03-20 16:33:29
我不知道什麼48和57對應,但爲什麼不嘗試'KeyCode'枚舉這樣的?像'如果e.KeyCode == Keys.Shift' ...壓制?? – nawfal 2013-03-20 16:37:12