【C#.NET】TreeViewをスクロールバーを使用せずスクロールさせる方法
関連記事
- 【#CSHARP】ソリューション内でサービス,Winformアプリを混在で作成させ,バイナリ出力先を同じにするとサービスが起動しない 【2024年02月08日(木)】
- 【#PHP】謎な #Laravel 案件 引き渡したじ 【2024年01月11日(木)】
- 【C#】謎な改造アプリ,SIMD命令を導入して高速化しようか,思案中 【2023年11月14日(火)】
- Javaの”やらかし”でC#と人気逆転か 激変プログラミング言語人気ランキング 【2023年10月18日(水)】
- 【#CSHARP】次の案件のスケルトン書いてgitサーバに登録するなどと 【2023年05月16日(火)】
NetFrameworkのTreeViewコンポーネントのツリーを
スクロールバーを操作することなく,スクロールさせてくれ!
なる件,実現してくれ,と依頼されて
スクロールバーの変わりに,2つのボタンのクリックイベントを使って,スクロールさせたいとのこと
なんか,プロパティ持ってんじゃね?
と探してみたけど,無かったり
んじゃぁ~,スクロールバーのHWnd捕まえて,
どげんかできるかな?などと探してみたけど,
この手の組み込みコンポーネントに引っ付いたスクロールバーのHWnd,捕まえられないみたい...
あれこれ,考えた結果
TreeViewコンポーネント自身に,メッセージ投げつければ,ひょっとしたら実現できるんじゃね?
に行き着いて
そしたら,うまく行ったんで,ここに書いておきますです
using System.Runtime.InteropServices; //InteropServicesをusingしてくださいませ #region Win32APIのSendMessage()を使って,コンポーネントに対しメッセージを直接投げつけます [DllImport("user32.dll",CharSet=CharSet.Unicode)] public static extern Int32 SendMessage(IntPtr hWnd, Int32 Msg, int wParam, int lParam); #endregion //メッセージ関係の定数を定義 private const int WM_VSCROLL = 0x115; //WM_VSCROLLメッセージを使用します private const int SB_LINEUP = 0; //上矢印を押した private const int SB_LINEDOWN = 1; //下矢印を押した private const int SB_PAGEUP = 2; //上ページアップを押した private const int SB_PAGEDOWN = 3; //下ページアップを押した //実際のコード ツリーのデータは降順で並んでます(下のほうが最新データと思っていただければ) m_TreeView.BeginUpdate(); //BeginUpdate(),EndUpdate()を入れたほうがちらつかないかも if (upScrFL == true) //アップ方向(下方向スクロール時)フラグが立っているとき { for(int i = 0; i < 5; i++) { SendMessage(m_TreeView.Handle, WM_VSCROLL, SB_LINEDOWN, 0); } } else { for(int i = 0; i < 5; i++) { SendMessage(m_TreeView.Handle, WM_VSCROLL, SB_LINEUP, 0); } } m_TreeView.EndUpdate();この例だと,マウス左クリックを,スクロールバーにて5回押したことになります
スクロールの移動量は,ループのカウントを適時いじっていただければ...
とりあえず,これで,欲しい機能が実現できたということで
![:mrgreen:](https://gurizuri0505.halfmoon.jp/wp-includes/images/smilies/mrgreen.png)
コメント
九州自動車道 トンネル内で大型トレーラーから出火 人吉~八代間で通行止め(24/7/26)
【#ご到着シリーズ】冷凍かしわ飯&冷凍かしわうどんセットに当選したモルモルモル
【#破局噴火】イエローストーンで大規模な水蒸気爆発が発生
暑すぎてダレてる.なんのやる気も起こらんドロドロドロ
【#Windows #CrowdStrike】セキュリティーソフト世界シェア1位があだ…ウィンドウズ障害、「過去最大規模」の見方も
3連休,らしい.これといって予定はない(爆
【#trump #shooting】トランプ暗殺未遂:トランプ氏 集会で発砲音「前大統領は無事」死者も
【#線状降水帯】九州北部山口県に線状降水帯発生予測情報発令(24/7/13)
【#落雷】今朝の雷,すごかったー 清武城かお隣のマンションに落雷したー共用部の電源落ちてるテレビが映らない!
【#彗星】紫金山アトラス彗星(C/2023 A3)がぶっ壊れた!今秋,見れると思ってたのにピエン