Получение System.FormatException при попытке привести - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть функция для дублирования строки в DataGridView, которая выглядит следующим образом:

private void dgv_CellClick(object sender, DataGridViewCellEventArgs e)
{
    DataGridView dgv = sender as DataGridView;

    // If button clicked
    if (e.ColumnIndex == 0)
    {
        // Get values what you want to use
        var value1 = dgv.Rows[e.RowIndex].Cells[1].Value;
        var value2 = dgv.Rows[e.RowIndex].Cells[2].Value;

        // Insert a new row behind the click one
        dgv.Rows.Insert(e.RowIndex + 1);

        // Set the previously stored values
        dgv.Rows[e.RowIndex + 1].Cells[1].Value = value1;
        dgv.Rows[e.RowIndex + 1].Cells[2].Value = value2;
    }
}

Теперь я хотел написать функцию для одной конкретной ячейки, чтобы увеличить +1 на каждый клик.Например: если в ячейке [2] значение равно 1, со следующей добавленной строкой значение должно быть равно 2, 3 и т. Д.Я пытался работать с +, но у меня появляется сообщение об ошибке, что оператор не может быть применен к типу объекта.Поэтому я попытался привести конкретную ячейку к следующему:

 var value2 = Convert.ToInt32(dgv.Rows[e.RowIndex].Cells[2].Value);

Но теперь я получаю SystemFormatException: входная строка была в неправильном формате.Есть идеи?

Заранее большое спасибо!

1 Ответ

0 голосов
/ 15 февраля 2019

Разрешить только числовые значения, как показано ниже

private void dgv_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    // Textbox columns
    if (dgv.CurrentCell.ColumnIndex == 2)
    {
        TextBox tb = e.Control as TextBox;
        if (tb != null)
        {
            tb.KeyPress += TextBox_KeyPress;
        }
    }
}

private void TextBox_KeyPress(object sender, KeyPressEventArgs e)
{
    // Only numeric characters allowed
    if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
    {
        e.Handled = true;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...