如何让datagridview的单元格只能输入正整数、正小数、负整数、负小数?(内有用于文本框的该方法),如何改为datagridview的?
如何让datagridview的单元格只能输入正整数、正小数、负整数、负小数?这里有用于文本框的该方法,如何改为datagridview的?下面是用于文本框的该种方法
(代码原出处:http://hi.baidu.com/luogenewuser/blog/item/c6c5583cc027fd32b9998f64.html):
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If Char.IsDigit(e.KeyChar) Or e.KeyChar = "." Or e.KeyChar = Chr(8) Then
If e.KeyChar = "." And InStr(TextBox1.Text, ".") > 0 Then
e.Handled = True
Else
e.Handled = False
End If
ElseIf e.KeyChar = "-" And TextBox1.Text = "" Then
e.Handled = False
Else
e.Handled = True
End If
End Sub
上面的代码中有将TextBox1.Text传入进行验证的步骤,如何将datagridview中正在编辑的单元格的值替换成TextBox1.Text的值进行验证? --------------------编程问答-------------------- 是对编辑的文本框进行操作的时候验证的。 --------------------编程问答-------------------- 例如用户按下“a”键,该键将被预处理和调度,而且会发生KeyPress事件。
using System;--------------------编程问答-------------------- 现在发现问题:
using System.Text.RegularExpressions;
//点击button按钮调用 IscheckNum(编辑文本框的值进行判断)
public static bool IscheckNum(string input)
{
string pattern = "^-?[1-9]+(\.\d+)?$|^-?0(\.\d+)?$|^-?[1-9]+[0-9]*(\.\d+)?$";
Regex regex = new Regex(pattern);
return regex.IsMatch(input);
}
代码如下:
Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
AddHandler e.Control.KeyPress, AddressOf SBDH_KeyPress
End Sub
Private Sub SBDH_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs)
If Char.IsDigit(e.KeyChar) Or e.KeyChar = "." Or e.KeyChar = Chr(8) Then
If e.KeyChar = "." And InStr(DataGridView1(1, 1).Value, ".") > 0 Then
e.Handled = True
Else
e.Handled = False
End If
ElseIf e.KeyChar = "-" And DataGridView1(1, 1).Value = "" Then
e.Handled = False
Else
e.Handled = True
End If
End Sub
在此例中以datagridview的(1,1)单元格为例;
发现程序运行中无法获取DataGridView1(1, 1).Value 的值,导致无法验证符号“.”和符号“-”,请问如何获取被编辑的单元格的值进行验证? --------------------编程问答-------------------- datagridview的单元格(1,1)好像是ROWS(1,1)吧 --------------------编程问答-------------------- Private Sub SBDH_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs)
If Char.IsDigit(e.KeyChar) Or e.KeyChar = "." Or e.KeyChar = Chr(8) Then
dim obj as control = sender
If e.KeyChar = "." And InStr(obj.text, ".") > 0 Then
e.Handled = True
Else
e.Handled = False
End If
ElseIf e.KeyChar = "-" And obj.text = "" Then
e.Handled = False
Else
e.Handled = True
End If
End Sub
补充:.NET技术 , VB.NET