VS2010、Windows7を使用しています
たくさんの絵箱のあるパネルがあります。それは持っています
AutoScroll = true
スクロールバーは、ドラッグまたはクリックすると正しく機能します。ただし、ホイールキーと矢印キーでスクロールしたい。
ホイールがまったく応答せず(フォーカスを変更すると起動が停止するため、フォームにイベントハンドラーを追加しても機能しません)、矢印キーを使用するにはプログラムでスクロールする必要があります。私は以下を試しました:
panel3.VerticalScroll.Value = panel3.VerticalScroll.Maximum;
これは機能せず、スクロールバーはほとんど動きません。 最大何らかの理由で常に100です。
私がホイールの問題で試したこと(動作しません):
// Fires as long as i don't change focus to anything
this.MouseWheel += new MouseEventHandler(Panel1_MouseWheel);
private void Panel1_MouseWheel(object sender, MouseEventArgs e)
{
panel3.Focus();
}
ありがとうございました。
試すべきいくつかのこと:
Panel
に最初のTabIndex
プロパティを持たせます。あれは:
panel1.TabIndex = 0;
明らかに、フォーム上の他のコントロールは適切にインデックスを再作成する必要があります。
また、MouseDownイベントにフォーカスを追加してみてください。
void panel1_MouseDown(object sender, MouseEventArgs e) {
if (!panel1.Focused)
panel1.Focus();
}
MouseEnterを実行することもできますが、パネル上でマウスを動かすと現在のアクティブなコントロールからフォーカスが奪われるため、これは奇妙なユーザーインターフェイスになる可能性があります。
MouseWheelイベントをサブスクライブする必要はありません。スクロールバーが自動的に移動するはずです。
AutoScrollPositionプロパティを割り当てることにより、パネルをスクロールします。負の値を使用することに注意してください。
マウスホイールが機能しない理由は、パネルも画像ボックスもフォーカス可能なコントロールではないためです。パネルコントロールを少し作り直して、フォーカスできるようにする必要があります。コードは この回答 にあります。
試してみてください
private void panel1_MouseEnter(object sender, EventArgs e)
{
panel1.Focus();
}