0

Windows フォームを使用して初めての C# アプリケーションを作成していますが、少し問題が発生しています。DataGridView コントロールの特定のセル内に配置されたコンテンツを検証しようとしています。内容が有効でない場合は、ユーザーに警告し、セルの背景を赤で強調表示します。さらに、イベントをキャンセルして、ユーザーが別のセルに移動できないようにします。これを実行しようとすると、メッセージ ボックスは正常に表示されますが、背景色は変わりません。誰かが理由を知っていますか?これが私のコードです:

        private void dataInventory_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
    {

        switch (e.ColumnIndex)
        {
            case 0:
                if (!Utilities.validName(e.FormattedValue))
                {
                    dataInventory.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor = Color.Red;
                    MessageBox.Show("The value entered is not valid.");
                    e.Cancel = true;
                }
                else
                {
                    dataInventory.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor = Color.White;
                }
                break;

//その他のもの

4

2 に答える 2

1

MessageBoxes は、検証中に使用するのに最適なツールではありません。を作成するe.Cancel = true;と、セルがフォーカスを失わないようにグリッドに指示されますが、MessageBox によってカーソルがコントロールから離れます。物事は少し混乱します。

色付け部分は機能しているはずですが、セルが強調表示されているため、結果が表示されていない可能性があります。

エラー アイコンを表示するグリッドの機能を使用するようにコードを変更してみてください。

dataGridView1.Rows[e.RowIndex].ErrorText = "Fix this";
e.Cancel = true;

メッセージを消去するには、CellEndEdit イベントを使用します。

void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
  dataGridView1.Rows[e.RowIndex].ErrorText = String.Empty;
}

チュートリアル: Windows フォーム DataGridView コントロールでのデータの検証を参照してください。

于 2012-07-27T03:11:19.793 に答える
0

次のコードを使用します

DataGridViewCellStyle CellStyle = new DataGridViewCellStyle();
CellStyle.BackColor = Color.Red;
dataInventory.Rows[e.RowIndex].Cells[e.ColumnIndex].Style = CellStyle;
于 2012-07-27T03:08:54.257 に答える