Winforms 文本框验证

Winforms 文本框验证,winforms,validation,textbox,Winforms,Validation,Textbox,我正在开发基于windows窗体的应用程序 我想验证文本框值。用户仅在文本框中输入数值, 现在我可以验证keypressevent,但我希望验证复制的值应该是数字,然后仅粘贴(鼠标右键单击粘贴或Ctrl+v)文本框 答案取决于您想要的反馈级别。如果您想给用户反馈,我建议使用验证事件和ErrorProvider 下面是一个例子: 否则,只需绑定到KeyDown或TextChanged事件,并去掉任何您不想出现的输入。根据具体的验证要求,您可能还会发现MaskedTextBox很有用:答案取决于您想

我正在开发基于windows窗体的应用程序

我想验证文本框值。用户仅在文本框中输入数值,
现在我可以验证keypressevent,但我希望验证复制的值应该是数字,然后仅粘贴(鼠标右键单击粘贴或Ctrl+v)文本框

答案取决于您想要的反馈级别。如果您想给用户反馈,我建议使用验证事件和ErrorProvider

下面是一个例子:


否则,只需绑定到KeyDown或TextChanged事件,并去掉任何您不想出现的输入。根据具体的验证要求,您可能还会发现MaskedTextBox很有用:

答案取决于您想要的反馈级别。如果您想给用户反馈,我建议使用验证事件和ErrorProvider

下面是一个例子:


否则,只需绑定到KeyDown或TextChanged事件,并去掉任何您不想出现的输入。根据您的确切验证要求,您可能还会发现MaskedTextBox很有用:

当用户将焦点放在文本框上时(假设某个值已从某处复制),您可以检查复制到剪贴板的最后一个值,并根据验证条件禁用/删除控件的焦点


在C#中使用剪贴板的示例:

当用户将焦点放在文本框上时(假设从某处复制了一个值),您可以检查复制到剪贴板的最后一个值,并根据验证条件从控件中禁用/移除焦点


在C#中使用剪贴板的示例:

您可以使用类似的内容

    private void txtOrgao_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.V && e.Modifiers == Keys.Control)
        {
            //Valida copy and paste com caracteres especiais
            e.SuppressKeyPress = !Util.validaCaracteresEspeciaisClipBoard(txtOrgao);
        }
    }

    private void txtOrgao_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!Char.IsLetterOrDigit(Convert.ToChar(e.KeyChar)) &&
            !Char.IsControl(Convert.ToChar(e.KeyChar)) &&
            !Char.IsWhiteSpace(Convert.ToChar(e.KeyChar)))
        {
            e.Handled = true;
        }
    }
助手类util:

public class Util
{
    /// <summary>
    /// Valida caracteres especiais em textBox para suprimir o evento KeyPress
    /// Caracteres Inválidos: Simbolos
    /// </summary>
    /// <param name="caixaTexto">objeto TextBox</param>
    /// <returns></returns>
    static public Boolean validaCaracteresEspeciaisClipBoard(TextBox caixaTexto)
    {
        //Valida copy and paste com caracteres especiais
        String clip = String.Empty;

        if (Clipboard.ContainsText())
        {
            clip = Clipboard.GetText().Substring(0, caixaTexto.MaxLength);

            for (int tam = 0; tam < caixaTexto.MaxLength; tam++)
            {
                if (!Char.IsLetterOrDigit(clip[tam]) &&
                    !Char.IsControl(clip[tam]) &&
                    !Char.IsWhiteSpace(clip[tam]))
                {
                    return false;
                }
            }
        }

        return true;
    }

}
公共类Util
{
/// 
///Valida caracteres Specifia em文本框支持事件按键
///里多斯卡拉克特斯酒店
/// 
///对象文本框
/// 
静态公共布尔值ValidCharactereSSpecialisClipboard(文本框caixaTexto)
{
//Valida复制和粘贴特殊字符
String clip=String.Empty;
if(剪贴板.ContainsText())
{
clip=Clipboard.GetText().Substring(0,caixaTexto.MaxLength);
for(int-tam=0;tam
您可以使用类似的方法

    private void txtOrgao_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.V && e.Modifiers == Keys.Control)
        {
            //Valida copy and paste com caracteres especiais
            e.SuppressKeyPress = !Util.validaCaracteresEspeciaisClipBoard(txtOrgao);
        }
    }

    private void txtOrgao_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!Char.IsLetterOrDigit(Convert.ToChar(e.KeyChar)) &&
            !Char.IsControl(Convert.ToChar(e.KeyChar)) &&
            !Char.IsWhiteSpace(Convert.ToChar(e.KeyChar)))
        {
            e.Handled = true;
        }
    }
助手类util:

public class Util
{
    /// <summary>
    /// Valida caracteres especiais em textBox para suprimir o evento KeyPress
    /// Caracteres Inválidos: Simbolos
    /// </summary>
    /// <param name="caixaTexto">objeto TextBox</param>
    /// <returns></returns>
    static public Boolean validaCaracteresEspeciaisClipBoard(TextBox caixaTexto)
    {
        //Valida copy and paste com caracteres especiais
        String clip = String.Empty;

        if (Clipboard.ContainsText())
        {
            clip = Clipboard.GetText().Substring(0, caixaTexto.MaxLength);

            for (int tam = 0; tam < caixaTexto.MaxLength; tam++)
            {
                if (!Char.IsLetterOrDigit(clip[tam]) &&
                    !Char.IsControl(clip[tam]) &&
                    !Char.IsWhiteSpace(clip[tam]))
                {
                    return false;
                }
            }
        }

        return true;
    }

}
公共类Util
{
/// 
///Valida caracteres Specifia em文本框支持事件按键
///里多斯卡拉克特斯酒店
/// 
///对象文本框
/// 
静态公共布尔值ValidCharactereSSpecialisClipboard(文本框caixaTexto)
{
//Valida复制和粘贴特殊字符
String clip=String.Empty;
if(剪贴板.ContainsText())
{
clip=Clipboard.GetText().Substring(0,caixaTexto.MaxLength);
for(int-tam=0;tam