C# パネルのユーザー コントロールを改善: フォーカスの問題を解決します
C# を使用したグラフィックス プログラムでは、キーボード入力を必要とするパネルで問題が発生することがよくあります。よくある問題は、パネルがフォーカスを取得できず、その結果 KeyUp/KeyDown/KeyPress および GotFocus/LostFocus イベントをトリガーできないことです。
Panel の機能を強化するための、より洗練された解決策は、Panel の基本クラスを次のように変更することです。
オプションを有効にする:
<code class="language-csharp"> SetStyle(ControlStyles.Selectable, true); TabStop = true;</code>
マウスをクリックして強制的にフォーカスします:
<code class="language-csharp"> protected override void OnMouseDown(MouseEventArgs e) { this.Focus(); base.OnMouseDown(e); }</code>
入力キー書き換え処理:
<code class="language-csharp"> protected override bool IsInputKey(Keys keyData) { if (keyData == Keys.Up || keyData == Keys.Down) return true; if (keyData == Keys.Left || keyData == Keys.Right) return true; return base.IsInputKey(keyData); }</code>
カスタム フォーカス視覚効果:
<code class="language-csharp"> protected override void OnEnter(EventArgs e) { this.Invalidate(); base.OnEnter(e); } protected override void OnLeave(EventArgs e) { this.Invalidate(); base.OnLeave(e); }</code>
フォーカス四角形を表示:
<code class="language-csharp"> protected override void OnPaint(PaintEventArgs pe) { base.OnPaint(pe); if (this.Focused) { var rc = this.ClientRectangle; rc.Inflate(-2, -2); ControlPaint.DrawFocusRectangle(pe.Graphics, rc); } }</code>
これらの変更により、パネルの選択とキーボード入力の受け取りの両方が可能になります。提供されたコードにより、パネルがクリックされたときにフォーカスが取得され、上下左右の矢印キーに応答するようになります。さらに、パネルがフォーカスを取得すると、パネルの周囲にフォーカス四角形が表示されるため、ユーザー エクスペリエンスが向上します。
以上がC# パネルでキーボード入力を受信し、フォーカス四角形を表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。