アプリ版:「スタンプのみでお礼する」機能のリリースについて

.NETでWinFormアプリをC#で製作中です。
Visual Studio Community 2017を使用しています。

テキストボックスやDataGridViewなどがアクティブじゃなくてもマウスカーソルが乗ればマウスホイールでの上下スクロールが効いて欲しかったりしますよね。

そこで検索してこちらの「MessageForwarder」クラスを作成して使用する方法を試すと見事に実現できました。
https://social.msdn.microsoft.com/Forums/vstudio …

しかし困ったことに、メインフォーム「FormA」の「TextBoxA」でMessageForwarderクラスを利用すると、「FormA」から呼び出した別フォーム「FormB」の「TextBoxB」が「TextBoxA」の上に重なっていると、マウスホイール使用時に「TextBoxA」を優先してスクロールさせてしまいます。

こういう場合、どう対処すれば良いでしょうか?

考え方としては、FormAからFormBをnewしてShowしたタイミングでMessageForwarderクラスの効果を何かしらの記述で無効にして、FormBを閉じたらまたMessageForwarderクラスの効果を有効にする、という感じでしょうか。
 (FormAのTextBoxAさえMessageForwarderクラスの効果が反映されればOKなので)

アドバイスありましたらぜひお願いします。m(_ _)m

A 回答 (1件)

>こういう場合、どう対処すれば良いでしょうか?


どのように仕様を決めるかでしょうね。
(因みに私はアクティブでない処がスクロールするのは好まないですが…)
第三者から見ると、「FormB」の「TextBoxB」だけが特別扱いなのか?
例えば「FormB」に「リストボックス」が有る場合は?
…疑問が涌きます。

思うに、アプリケーション内でフォーカスが移動している限りは「MessageForwarder」の効果は無い、のが自然に感じます。
何れにしても PreFilterMessage 辺りの条件に追加/修正かな…
    • good
    • 0
この回答へのお礼

davidfoxさん、ご回答ありがとうございます!

確かに私もアクティブでないフォームのコントロールがスクロールするのは好まないですが、そこは妥協で影響してもしなくてもどちらでも良いかなという感じではあります。
(職場のP4Vで挙動を確認してみたらチェンジリストウインドウを開いている間にも本体のツリーパネル上でホイールが効いたりしていて、そんなものかと思いました)

単純に今回作成しているFormBがスクロールするコントロールが1つだけなので、そこだけ何とかなれば良いと考えています。

>何れにしても PreFilterMessage 辺りの条件に追加/修正かな…

なるほど、この辺りちょっと触ってみたいと思います!

お礼日時:2018/09/30 16:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!