1

Windows アプリケーションの DataGridView に DataGridViewComboBoxColumn があります。ユーザーは、他の場所で設定を変更して、DataGridViewComboBoxColumn での選択を無効にする可能性があります。リストで有効なアイテムのみを選択可能なままにして、無効なアイテムを保持/表示する必要があります。

選択を修正しないと、例外がスローされます:
DataGridViewComboBoxCell 値が無効です。

設定をキャッチして無視すると、選択した値がリスト内の最初の有効な項目に戻ります。

選択可能な値のリストに表示されないように、DataGridViewComboBoxColumn に値を提供する方法はありますか?

4

3 に答える 3

1

ドロップダウン リストの値が色で、DataGridView にはクローゼットにある T シャツのリストがある例を使用します。

ComboBox 列にバインドされているリスト オブジェクトに無効な色を挿入しようとしましたか? おそらく、キーが無効な色に一致するが、「(無効)」(または他の同様のテキスト) を示す何かをリストに挿入できます。最初のバインド後に誰かがそれを選択しようとした場合、CellValidating イベントに応答する必要があります。

DataGridView の値 (T シャツ) が無効になるようにアプリケーションの別の場所でルックアップを変更することによって無効な色が発生する場合は、いくつかのオプションがあります。おそらく、そのロジックを変更して、T シャツのリストに移動するデータを検索し、その色の既存の T シャツがあるかどうかを確認し、ユーザーに「赤を無効にしましたが、赤いTシャツ、どうする?」赤の非アクティブ化を停止するか、T シャツを変更するか、T シャツを削除することができます。

無効な色が制御できないソースからのものである場合、ユーザーが T シャツのリストを見ようとしたときに、「赤は T シャツの有効な色ではなくなりました。どうすればよいですか」というプロンプトを表示できます。赤いTシャツ?」

アプリケーションにも同様の制約があります。コンボ ボックスを削除し、代わりに CellValidating を使用します。

于 2009-05-01T21:20:25.323 に答える
1

私は非常に奇妙な解決策を見つけました:

autosizecolumnmode を none に設定します...

ここに説明があります

http://www.kebabshopblues.co.uk/2007/03/24/more-on-that-datagridviewcombobox-error/

于 2009-03-03T14:56:47.220 に答える
0

おそらく、コンボボックスに入力するバインドされたデータソースは読み取り専用です。もしそうなら、基になるデータソースに無効な値を一時的に挿入してみませんか。そうすれば、それはまだ表示されます。一時的な列を追加して、無効なアイテムにフラグを付け、ユーザーが選択したままにしておくことを許可せず、ユーザーがセルから移動したときに削除することができます。私は datagridview でこれを行ったことはありませんが、別のサードパーティのグリッドで非常に似たようなことをしました。幸運を!

于 2009-09-17T10:37:39.307 に答える