Проверка текстового поля - PullRequest
1 голос
/ 11 августа 2009

Я работаю над приложением Windows Form.

Я хочу проверить значения текстового поля. Пользователь вводит только числовые значения в текстовое поле, Теперь я могу проверить keypressevent, но я хочу проверить скопированное значение должно быть числовым, а затем вставлять только текст (вставка правой кнопкой мыши или Ctrl + v).

Ответы [ 3 ]

1 голос
/ 11 августа 2009

Ответ будет зависеть от желаемого уровня обратной связи. Если вы хотите оставить отзыв, я бы порекомендовал использовать событие Validating и ErrorProvider.

Вот пример: http://www.java2s.com/Tutorial/CSharp/0460__GUI-Windows-Forms/ErrorProvidernumbermustbeinarange.htm

В противном случае просто привяжите к событиям KeyDown или TextChanged и удалите все входные данные, которые вы не хотели там видеть. В зависимости от ваших точных требований проверки, вы также можете найти полезный MaskedTextBox: http://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox.aspx

0 голосов
/ 28 февраля 2011

Вы можете использовать что-то вроде этого.

    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;
        }
    }

Утилита класса помощника:

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;
    }

}
0 голосов
/ 11 августа 2009

Когда пользователь фокусируется на текстовом поле (при условии, что значение было скопировано откуда-то), вы можете проверить последнее значение, скопированное в буфер обмена, и отключить / удалить фокус из элемента управления в зависимости от ваших критериев проверки.

Пример использования буфера обмена в C #: http://www.codeproject.com/KB/shell/clipboard01.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...