Я предполагаю, что неловкая строка кода ...
Convert.ToInt32(row.Cells[dataGridView1.Columns[5].Index].Value)
может быть сбивает вас с толку. Convert.ToInt32
вернет ноль (0), если…
row.Cells[dataGridView1.Columns[5].Index].Value
возвращает ноль ... поэтому использование этой конструкции не поможет вам различить значение null
и нулевое (0
) значение, поскольку ОБА значения вернут ноль (0).
Код выдаст исключение FormatException
, если Value
не является допустимым числом. Он НЕ будет генерировать исключение, если значение равно нулю.
Чтобы помочь, я уверен, что вам нужно будет разбить это на три (3) части.
1) Проверьте значение null
.
2) Если не ноль, проверьте правильность номера.
3) Если номер действительный, проверьте, равен ли он нулю (0).
«Неловкая» часть оператора if
это…
dataGridView1.Columns[5].Index ???
это «всегда» будет возвращать «5». Поэтому утверждение…
Convert.ToInt32(row.Cells[dataGridView1.Columns[5].Index].Value
можно переписать как ...
Convert.ToInt32(row.Cells[5].Value
С учетом сказанного ниже приведен код, который поможет различать нулевые значения, нечисловые значения и, наконец, если значение равно нулю. Как предполагает Дериндер, лучше использовать метод int32.TryParse
.
private void Form1_Load(object sender, EventArgs e) {
FillGrid();
}
private void FillGrid() {
for (int i = 0; i < 10; i++) {
dataGridView1.Rows.Add("C0R" + i, "C1R" + i, "C2R" + i, "C3R" + i, "C4R" + i, i);
}
}
private void button1_Click(object sender, EventArgs e) {
DataGridViewRow row = dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex];
if (row.Cells[5].Value != null) {
if (Int32.TryParse(row.Cells[5].Value.ToString(), out Int32 numvalue)) {
if (numvalue == 0) {
MessageBox.Show("Quantity/Value is not null and is equal to zero 0");
}
else {
MessageBox.Show("Quantity/Value is not null, is a valid number but it is NOT equal to zero 0. Its value is: " + numvalue);
}
}
else {
MessageBox.Show("Quantity/Value is not null but it is not a valid number. Its value is: " + row.Cells[5].Value.ToString());
}
}
else {
MessageBox.Show("Quantity/Value is null...");
}
}