1

コントロールはブール値と列挙型の両方のプロパティCheckBoxを公開します。これにより、コントロールをチェック済み、チェックなし、または混合状態(列挙値)のいずれかに設定できます。CheckedSystem.Windows.Forms.CheckStateCheckStateIndeterminate

ListViewアイテムの状態をに設定したいのですIndeterminateが、プロパティしかChecked利用できないようです。それで、おそらくウィンドウメッセージングまたは同様のトリックによって、それを混合に設定する方法はありますか?

4

3 に答える 3

3

次の回避策を使用できます。

  1. 3つの状態で状態ImageListを作成します(CheckBoxRendererを使用して画像を作成できます)
  2. この画像リストをリストビューに割り当てます
  3. 次に、OnMouseDown(またはOnMouseClick)イベントとOnKeyDownイベントを処理し、必要なリストアイテムの状態画像をシフトする必要があります

もちろん、チェック状態などを取得するためにいくつかのヘルパーメソッドを作成する必要もあります。しかし、一般的に、このソリューションは比較的簡単に実装できます。

実際には、内部のListView実装も同じことを行いますが、このロジックはcomctl32.dll内に隠されています。

于 2009-06-26T06:38:56.503 に答える
0

ObjectListView(.NET WinForms ListViewのオープンソースラッパー)は、混合状態のチェックボックスをサポートします。

デモの[シンプル]タブを見て、実際の動作を確認してください。

(作業を終えたので、アービターが提案するほど簡単ではないと言わざるを得ません)

于 2009-07-14T11:51:54.583 に答える
-1

ListViewには不確定な状態はありません。

于 2009-06-26T05:34:05.993 に答える