グリッドビューに複数の列が含まれていて、入力の種類をdouble
に調整しました。DataGridViewセルの検証と選択方法
ユーザーがセルを選択してデータを入力すると、タイプがdouble
と一致するかどうかをチェックしたいと思います。
ユーザーが別のセルをクリックして、放置しようとしているセルが一致せず、解析に失敗した場合は、失敗したセルにフォーカスを戻し、選択したセルにフォーカスを戻して、有効なデータを入力してから、セルの残りの部分を充填し続けます。
問題は、常に失敗したセルから離れることです。私がバリデーションやバリデーションのような他の機能を使用したとしても。
private void dataGridView1_CellLeave(object sender, DataGridViewCellEventArgs e)
{
var selectedCell = dataGridView1.SelectedCells[0];
if (selectedCell.OwningColumn.ValueType == typeof(double))
{
try
{
double result = Convert.ToDouble(selectedCell.EditedFormattedValue.ToString());
if (result <= 0)
{
MessageBox.Show("Please Positive Numbers Only");
dataGridView1.Focus();
dataGridView1.CurrentCell = dataGridView1.Rows[selectedCell.RowIndex].Cells[selectedCell.ColumnIndex];
dataGridView1.BeginEdit(true);
}
else
{
dataGridView1.CurrentCell.Value = result;
}
}
catch
{
MessageBox.Show("Please Enter Numbers Only");
}
}
}
あなたはそれを試してみて、それが動作しましたか?私はそれを試して、それが私のために働かなかったので、サンプルコードを私に提供してください。 –
はい、それは魅力のように働いています。 Dgv "CellValidating"は、実際のセルから離れる(または他のセルをクリックするか、Enterキーを押す)ときに上がります。 – krzysztofla
ありがとう!私は、CellValidatingを使用したときに、この行 'e.Cancel = true; 'を追加するだけでした。今は完璧に動作します。 –