GroupBox を拡張するカスタム コントロールを作成しました。このコントロールは折りたたみと展開をサポートしており、GroupBoxRenderer と ButtonRenderer を使用して、隅にボタンがある典型的な GroupBox のように見せます。「ボタン」を効果的に動作させ、通常のボタンのように見せる適切なマウスイベントをすべて処理しました。ここで、TabStop を使用して GroupBox がフォーカスを受け取らないという問題に遭遇しました。Collapsable GroupBox を取得して TabStop からフォーカスを受け取る方法はありますか?
.NET での検証後にコントロールにフォーカスを設定する方法のトリックを使用して、Enter イベントにフォーカスを設定できることを望んでいましたが、実際にフォーカスを取得するタイミングを判断する良い方法が思い浮かびませんでした。 . おそらく、次に高い TabIndex と最も低い TabIndex (または同じ TabIndex の場合は ChildIndex) を持つ兄弟を見つける方法を考案し、それらがフォーカスを失ったかどうかを判断することができますが、これは少しハックで、取得しないと壊れる可能性が高いようですまさにそうです。
注: 最初にユーザー コントロールを作成しましたが、次のようなさまざまな理由から、これは私が望んでいたものではありませんでした。
- ボタンとグループボックスを含むコントロールではなく (たまたまそのように見える)、グループボックスです。
- 柔軟性
- バックエンド コードと UI の結合
- 動的レイアウト
- Toolbox のサポートと、コントロール全体の UI とレイアウトのカスタマイズを必要とする多くのプロジェクトで共有
展開するとこんな感じ。
そして今、それが折りたたまれている(そしてフォーカスがある)とき: