FlowLayoutPanelをマウスホイールでスクロールできない
作成日時:2024-12-07
更新日時:2024-12-07
結論
FlowLayoutPanelのMouseEnterイベントに、FlowLayoutPanelにフォーカスする処理を入れればスクロールできるようになる。
またはClickイベントに入れる。
flowLayoutPanel1.MouseEnter += (_, _) => flowLayoutPanel1.Focus();
flowLayoutPanel1.Click += (_, _) => flowLayoutPanel1.Focus();
経緯
FlowLayoutPanelに大量のコンポーネントを追加した。
親Formの描画範囲を超えているので、スクロールバーが発生した。
スクロールバーを直接操作すればスクロールできるが、マウスホイールではスクロールできなかった。
対応
FlowLayoutPanelにフォーカスが当たるようにする。
どうやらフォーカスが当たっていないから動かなかったぽい。
親のマウスホイールイベントは発火していた。
別解
※未検証
親のマウスホイールイベントが発火したら、対象のコントロールのマウスホイールイベントを発火させる。
対象のコントロールを継承したコントロールを作成し、OnMouseWheelを呼び出すメソッドを作成。
⇒OnMouseWheelの可視性がprotectedだから。
作成したメソッドを、親のマウスホイールイベントに登録する。