0

フォームに2つありますFlowLayoutPanelsPanelAPanelB。パネルがスクロールするように(つまりAutoScroll、true)、実行時に複数のコントロールがそれぞれに入力されます。

問題は次のとおりです。パネルに入力されるコントロールには、それぞれが含まれていComboBoxます。したがって、MouseWheelイベントはパネルではなくコンボボックスによって消費されます。MouseWheelパネルがイベントを消費してほしい。

子コントロールにスクロール可能なコントロールがない場合、MouseWheelイベントは子コントロール(それを処理しない)をスキップし、それを処理するパネルにヒットします。MouseWheelイベントを無視するように子コントロールのコンボボックスを設定するにはどうすればよいですか?イベントを再開するように指示できますか?

子コントロールの1つが「MouseEnter」イベントにチェックマークを付けるたびに、親にフォーカスを適用してみました。これにより、スクロールの問題が修正されましたが、子コントロールは完全に編集できなくなりました。

私が掘り下げて見つけた他の何かは、Windows APIを直接いじることですが、これにはそのようなものが必要であるとは信じがたいです。

4

1 に答える 1

1

次のコードをテストしましたが、問題の解決策のようです。基本的に、クリックするか、マウスが「FlowLayoutPanel」に入るときに、「FlowLayoutPanel」にフォーカスする必要があります。

private void newCheckListQuestionPanel_Click(object sender, EventArgs e)
{
   newCheckListQuestionPanel.Focus(); //allows the mouse wheel to work after the panel is clicked
}
private void newCheckListQuestionPanel_MouseEnter(object sender, EventArgs e)
{
   newCheckListQuestionPanel.Focus(); //allows the mouse wheel to work after the panel has had the mouse move over it
}
于 2012-10-31T16:04:57.663 に答える