Почему нельзя проверить столбец в DataGridView только по алфавиту? - PullRequest
1 голос
/ 04 июля 2011

я делаю проект в форме окна в C # у меня есть DataGridView с данными из базы данных

теперь я хочу сделать редактирование в GridView данных, и у меня есть этот столбец, называемый Name, но и я хочу проверить, чтобы при редактировании пользователем он вводил только алфавит, как, например, в строке 1 столбца Name есть имя называется Rosy Chin, затем пользователь редактирует этот Rosy Ch11n ... он должен предложить пользователю сказать, что только алфавит, я использую приведенный ниже код, но он не запрашивает у меня это сообщение ... однако, если пользователь редактирует это 4Рози Чин .... появится быстрое сообщение ... могу ли я знать, где я ошибаюсь ??

private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
    if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
    {
        //int indicator;
        int newInteger;

        if (e.ColumnIndex == 1)
        {
            if (dataGridView1.Rows[e.RowIndex].IsNewRow) return;
            String data = e.FormattedValue.ToString();

             String validate= @"^[a-zA-Z]";
             Regex nameAlphabet = new Regex(validate);
             String nameGridView = data;                 
             if(!(nameAlphabet.IsMatch(nameGridView )))
             {
                 e.Cancel = true;
                 MessageBox.Show(@"Name must be in Alphabet!");
             }
             else
                 return;
        }
}

Ответы [ 2 ]

2 голосов
/ 04 июля 2011

Попробуйте исправить свой RegEx:

 ^[a-zA-Z ]+$

Описание:

^ start of line
[a-zA-Z ] any letter or space
+ one or more
$ end of line

Хороший RegEx песочница .


Чтобы неоставьте только s пробел:

^[A-Za-z][a-zA-Z ]+[A-Za-z]$

Ссылка на песочницу .

0 голосов
/ 04 июля 2011

Если не попробовать, как указано ниже

Regex nameAlphabet = new Regex(@"^[a-zA-Z\s]+$");

Вы можете сделать это программно, проверив количество пробелов в текстовом поле, если пробел больше 1 или если текстовое поле начинается с пустого места, вы можете поднять необходимое поле сообщения, которое вам требуется

попробуйте это в своем коде, где вы проверяете

  int cnt = 0;
    while (TextBox1.Text.Contains(" "))
    {
        cnt++;
        if (cnt > 1)
        {
            MessageBox.show("Only a space is allowed");
            break;
        }
    }

Аналогичным образом вы можете проверить, начинается ли textbox с пробела или нет, как показано ниже

if(textbox.text.startswith(" "))
{
    // Your message
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...