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