当前位置:编程学习 > C#/ASP.NET >>

如何让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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,