ユーザーが CheckBox にタブで移動してフォーカスを与えると、CheckBox の周りに点線の境界線が表示され、フォーカスがあることを示します。
コード呼び出しによって CheckBox がフォーカスされるとmyCheckBox.Focus()
、そのようなインジケーターは表示されません (スペースバーを押すと状態が切り替わります)。
プログラムで CheckBox にフォーカスを設定したときに、CheckBox のフォーカス境界線を表示するにはどうすればよいですか?
境界線は、キーボード (Tab キー) で移動している場合にのみ、意図的に表示されます。このトピックに関するMSDN ページには、詳細が記載されています。
フォーカスのビジュアル スタイルは、フォーカス アクションがキーボードによって開始された場合にのみ機能します。マウス操作またはプログラムによるフォーカスの変更により、フォーカス ビジュアル スタイルのモードが無効になります。
境界線を表示したい場合は、IsFocused- プロパティでトリガーを使用して視覚的な変更を行うことができます (ただし、これで境界線を設定することはできません)。実際に境界線が必要な場合は、独自の境界線を作成する必要があります。コントロール テンプレート。
SOには、キーを押すことをシミュレートすることを提案するやや関連するトピックに関するスレッドもありますが、この解決策を問題に使用しないことをお勧めします。
'initially set chkCheckBox.Appearance = 1
'on Got Focus set appearance = 0 - Flat
Private Sub chkCheckBox_GotFocus()
chkCheckBox.Appearance = 0
End Sub
'on Lost Focus set appearance = 1 - 3D
Private Sub chkCheckBox_LostFocus()
chkCheckBox.Appearance = 1
End Sub