6

私は持っていDataGridViewます。一部のセルでは、いくつかのデータを追加します。現在編集中のセルが空で、そのままにしておくと、「bla-bla-bla」というメッセージがユーザーに表示され、編集モードのセルはフォーカスを取り戻す必要があります。

これを行うために、、などを使用していCellEnterますCellLeaveCellEndEditセルに入力された値を確認した後、これらのイベントをキャンセルしたいと思います。しかし、Imnoobとそれは機能しません。私を助けてください。アドバイスをいただければ幸いです。

これが私のコードの変形です。他のイベントで試してみましたが、とてもナイーブです。

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    if (dataGridView1[e.ColumnIndex, e.RowIndex] == null)
    {
        MessageBox.Show("Empty cell!");

        dataGridView1.CurrentCell = dataGridView1[e.ColumnIndex, e.RowIndex];
    }
}
4

2 に答える 2

8

CellValidatingのイベントに基づいて解決策を探す必要があると思いますDataGridView

が編集モードを終了しようとしているときにDataGridView起動され、ユーザーが入力した値を受け入れないようにします。入力された値を拒否するには、イベント ハンドラのコードで を に設定する必要がありe.CancelますTrue

private void dataGridView1_CellValidating(object sender,
    DataGridViewCellValidatingEventArgs e)
{

    if (!IsValueValid(e.FormattedValue))
    {
        e.Cancel = true;

        MessageBox.Show("Not Valid!");
    }
}

DataGridViewCellValidatingEventArgsWeb には多くの例があり、MSDNのドキュメントで直接見つけることができます。プロパティDataGridViewCellValidatingEventArgs.FormattedValueのドキュメントも参照してください。

メソッドIsValueValid(Object o)はコンポーネントの一部ではなくDataGridView、単なる命名例であることに注意してください。コードで宣言し、検証用の本体を提供する必要があります。

于 2012-07-02T19:52:08.873 に答える