как сделать проверки для числовых, двойных и пустых значений для datagridview - PullRequest
1 голос
/ 17 октября 2011

как сделать проверки для числовых, двойных и пустых значений для datagridview в приложении c # windows. Нельзя допускать, чтобы текстовые значения вводили ячейки, которые являются числовыми или двойными. Как это сделать?

Ответы [ 4 ]

1 голос
/ 21 октября 2011

Если вы хотите запретить ввод данных, кроме чисел, вам нужно обработать событие EditingControlShowing в DataGridView.Это можно сделать так:

dataGridView.EditingControlShowing = new DataGridViewEditingControlShowingEventHandler (dataGridView_EditingControlShowing);

Затем определите ваш обработчик:

    void dataGridView_EditingControlShowing (object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        TextBox tx = e.Control as TextBox;
        tx.KeyPress += new KeyPressEventHandler (tx_KeyPress_int);
    }

Затем определите ваш обработчик KeyPress и обрабатывайте только числовые символы:

    void tx_KeyPress_int (object sender, KeyPressEventArgs e)
    {
        if (!(char.IsNumber (e.KeyChar) || e.KeyChar == '\b'))
        {
            //is NOT number or is Backspace key
            e.Handled = true;
        }
    }

Отрегулируйте в соответствии с вашими потребностями (т. Е. Обрабатывайте ввод только для определенного столбца и т. Д.)

1 голос
/ 18 октября 2011

Вы можете проверить ячейку таблицы данных следующим образом ...

private void dataGridView1_CellValidating(object sender,DataGridViewCellValidatingEventArgs e)
{
   // Validate the CompanyName entry by disallowing empty strings.
    if (dataGridView1.Columns[e.ColumnIndex].Name == "CompanyName")
    {
        if (e.FormattedValue == null && String.IsNullOrEmpty(e.FormattedValue.ToString()))
        {
          dataGridView1.Rows[e.RowIndex].ErrorText =
            "Company Name must not be empty";
           e.Cancel = true;
        }
   }
}

void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
     // Clear the row error in case the user presses ESC.   
      dataGridView1.Rows[e.RowIndex].ErrorText = String.Empty;
}

Это проверяет только пустые значения, если вы хотите проверить числовые значения, вы можете сделать это так ... Я надеюсь, что это поможет вам ...

0 голосов
/ 17 октября 2011

Пожалуйста, прочитайте эту ссылку.

http://msdn.microsoft.com/en-us/library/aa730881(v=vs.80).aspx

@@ Edit,
если вы попытаетесь использовать свой собственный числовой элемент управления,
1. Вам не нужно проверять какую-либо дополнительную проверку.
2. Многоразово.

0 голосов
/ 17 октября 2011

Если вы хотите проверить значения ячеек, когда пользователь пытается покинуть ячейку, вы должны обработать событие DataGridView.CellValidating и обработать значение ячейки там.Если вы хотите проверить значение при вводе пользователем, вы можете обработать событие KeyPress.

Для проверки числовых значений вы можете использовать код, подобный следующему:

int number = 0;
if(!int.TryParce(cell.Value.ToString(), out number))
{ 
    //report about error input 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...