0

単一の DataGridVeiwComboBox コントロールの選択されたアイテムのスタイルを変更したいと思います。

私の DataGridView に情報をフィードするデータベースがあり、何らかの理由でデータが無効な場合は、何らかの方法でユーザーに通知したいと考えています。数百行のリストで目立つように、ドロップダウン テキストのフォントを赤、背景を青にすることにしました。

無効なデータ (データベースからのデータがドロップダウン リストのオプションの 1 つでないことを意味する) がある場合、DataError コールバックが呼び出されます。

private void OnDataError(object sender, DataGridViewDataErrorEventArgs e)
{
    DataGridViewCellStyle style = new DataGridViewCellStyle();
    style.ForeColor = Color.Red;
    style.BackColor = Color.Blue;
    ((DataGridViewComboBoxCell)(((DataGridView)(sender))[e.ColumnIndex, e.RowIndex])).Style = style;
    e.Cancel = true;
}

ただし、これにより次の結果が得られます。

ここに画像の説明を入力

ドロップダウンを変更したくないので、選択した値である「0」を変更したい。

値が無効であることをユーザーに通知する別の方法はありますか? リストを作成してユーザーに提示したくありません。行数が非常に多くなる可能性があります。

4

1 に答える 1

0

私の知る限り、目標を達成するための簡単なアプローチはありません。

  1. カスタムの「Column」、「Cell」、および「EditingControl」クラスを作成します。カスタムを作成し、カスタム カラーでアイテムを描画するメソッドをDataGridViewComboBoxEditingControlオーバーライドします。OnDrawItem

  2. ComboBoxColumnカスタムクラスで必要なコンボボックス列を作成し、それをグリッドに追加してデータをバインドします。列のプロパティを設定するDataPropertyNameと、データがバインドされると、そのデータ列がグリッド列にバインドされます。DataGridView は、他の列を自動的に生成します。

于 2014-01-31T10:47:56.500 に答える