none
Panelをホイールでスクロールしたいです。 RRS feed

  • 質問

  • PanelをMouseWheelイベントでアップスクロールしたときはPanel.topを下げて、ダウンスクロールしたときは上げるようにしたいのですが、VScrollBarを使ってマウスでクリックしたときはうまくいくのですが、MouseWheelでスクロールしたいのですがどのように書けばよいでしょうか。

    Panel1.MouseWheelイベントプロシージャで

    IF e.Delta>0 then 上スクロール

    IF e.Delta<0 then 下スクロール

    という風にしても全く無反応です。

    というかこのプロシージャにLabel1.TEXT=e.Deltaと置いていても表示が何も変わらずこのプロシージャ自体が実行されていないようです。

    マウスのホイールは回転式ではなくスライド式ホイールで前後にスライドさせるとホイールを回転したのと同じ働きをするマウスなのですが。マウスは関係ないですか。

    VB2005を購入してまだ1日です。

    おわかりになる方ぜひよい方法を教えてください。

     

     

    2007年2月21日 2:44

回答

  • メソッド名はFocusですけど、どう制御するかは問題です。

    私はいい方法を思いつきません。(言い出しといてすみませんが。。。

    2007年2月21日 7:35

すべての返信

  • panelにはフォーカスがいきません。

    強制的にFocusしてやれば動きますけど。

    2007年2月21日 4:00
  • Form Loadで

    Panell1.SetFocusとやってみましたがダメでした。

    こんな命令はないでしょうか。

    Focusを強制的にPanellにセットする書き方を教えてただけないでしょうか。

     

    2007年2月21日 7:08
  • Load時にFocusをセットしてもその後最初のコントロールにフォーカスが行ってしまいます。

    ちなみにFormのクリックイベントに

    Panel1.Focus <-SetFocusはVB6です。

    と書いたところうまくいくようです。

    なにかボタンを配置して、そのクリックイベントでも大丈夫みたいです。

     

    2007年2月21日 7:34
  • メソッド名はFocusですけど、どう制御するかは問題です。

    私はいい方法を思いつきません。(言い出しといてすみませんが。。。

    2007年2月21日 7:35
  • 回答ありがとうございました。

    ほぼ目的のことができるようになりました。

    2007年2月21日 8:21
  • こんばんわ。当方も 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();
      }

     

    自フォームがアクティブかどうかを知る方法は、他に良いやり方があるかもしれませんが

    とりあえずフォームのアクティブ・デアクティブのイベントを捕らえ状態変数をいじるようにようにしました。

     

     

    2007年5月26日 17:08
  • よく見たら hideboさんのと同じ方法でしたね。失礼しました!
    2007年5月26日 20:37