トップ回答者
Panelをホイールでスクロールしたいです。

質問
-
PanelをMouseWheelイベントでアップスクロールしたときはPanel.topを下げて、ダウンスクロールしたときは上げるようにしたいのですが、VScrollBarを使ってマウスでクリックしたときはうまくいくのですが、MouseWheelでスクロールしたいのですがどのように書けばよいでしょうか。
Panel1.MouseWheelイベントプロシージャで
IF e.Delta>0 then 上スクロール
IF e.Delta<0 then 下スクロール
という風にしても全く無反応です。
というかこのプロシージャにLabel1.TEXT=e.Deltaと置いていても表示が何も変わらずこのプロシージャ自体が実行されていないようです。
マウスのホイールは回転式ではなくスライド式ホイールで前後にスライドさせるとホイールを回転したのと同じ働きをするマウスなのですが。マウスは関係ないですか。
VB2005を購入してまだ1日です。
おわかりになる方ぜひよい方法を教えてください。
回答
すべての返信
-
こんばんわ。当方も TableLayoutPanelをスクロールでなやみ、(当方には十分な)解決法をみつけたのでご報告します。
パネルにいくつかイベントを加えました。
「そのパネルがアクティブなときにだけ、マウスカーソルがパネルに入ってきたら、パネルをフォーカスし
結果 パネルがホイールによるスクロール動作をおこなうようになる」というものです。
(C#のコードでごめんなさいね)
例bool isFormActive = false;private void Form_Selecter_Activated(object sender, EventArgs e)
{
isFormActive = true;
}private void Form_Selecter_Deactivate(object sender, EventArgs e)
{
isFormActive = false;
}
private void basePanel_MouseEnter(object sender, EventArgs e)
{
if( isFormActive )
basePanel.Focus();
}自フォームがアクティブかどうかを知る方法は、他に良いやり方があるかもしれませんが
とりあえずフォームのアクティブ・デアクティブのイベントを捕らえ状態変数をいじるようにようにしました。