C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 複数画面遷移クリック時のToolStripButtonの反応


(過去ログ 119 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■69912 / inTopicNo.1)  複数画面遷移クリック時のToolStripButtonの反応
  
□投稿者/ らうむ (3回)-(2014/02/11(Tue) 09:48:42)

分類:[.NET 全般] 

2014/02/11(Tue) 12:00:49 編集(投稿者)


Win7 C# .Net2010
お世話になります。
2個のフォームがあり、片方はメインウィンドウで、片方はツールウィンドウとして常に最前面に居座っているような編集アプリケーションを作っているます。
ツールウィンドウのほうには作業用のボタンやリストボックス、コンボボックスを配置しています。

メインウィンドウで作業途中にツールウィンドウ上の各種コントロールをクリックしたときですが、ToolStripButtonだけ2回クリックしないと反応してくれません。

リストやコンボは1クリックで反応してくれますが、ToolStripButtonは2回クリックしないといけないため、非常に不便です。ウィンドウがアクティブにならないと反応しない
という仕様なのか?と想像しているのですが。

ウィンドウスタイルはSizableToolWindowやSizableで試しましたが、同じでした。

ボタンコントロールでも1発で反応してくれるようにならないものでしょうか。

ご教示の程、よろしくお願いしますm(__)m
引用返信 編集キー/
■69922 / inTopicNo.2)  Re[1]: 複数画面遷移クリック時のToolStripButtonの反応
□投稿者/ 魔界の仮面弁士 (525回)-(2014/02/12(Wed) 11:38:17)
No69912 (らうむ さん) に返信
> ウィンドウがアクティブにならないと反応しない
> という仕様なのか?と想像しているのですが。
アクティブにした後、クリックを無かったことにする仕様です。
いわゆる MA_ACTIVATEANDEAT ですね。


> ボタンコントロールでも1発で反応してくれるようにならないものでしょうか。
そういう動作となるよう、ToolStrip を作り変えてみました。


public class RaumToolStrip : ToolStrip
{
    protected const int WM_MOUSEACTIVATE = 0x0021;

    /// <summary>ウィンドウをアクティブにし、マウスのメッセージを破棄しません。</summary>
    protected const int MA_ACTIVATE = 1;

    /// <summary>ウィンドウをアクティブにし、マウスメッセージを破棄します。</summary>
    protected const int MA_ACTIVATEANDEAT = 2;

    /// <summary>ウィンドウをアクティブにせず、マウスのメッセージを破棄しません。</summary>
    protected const int MA_NOACTIVATE = 3;

    /// <summary>ウィンドウをアクティブにせず、マウスメッセージを破棄します。</summary>
    protected const int MA_NOACTIVATEANDEAT = 4;

    protected override void WndProc(ref Message m)
    {
        base.WndProc(ref m);
        if (m.Msg == WM_MOUSEACTIVATE && m.Result == (IntPtr)MA_ACTIVATEANDEAT)
        {
            //m.Result = (IntPtr)MA_ACTIVATE;
            m.Result = (IntPtr)MA_NOACTIVATE;
        }
    }
}


プロパティで切り替えられるようにしておいても良いかも。

引用返信 編集キー/
■69925 / inTopicNo.3)  Re[2]: 複数画面遷移クリック時のToolStripButtonの反応
□投稿者/ らうむ (4回)-(2014/02/12(Wed) 12:49:57)
魔界の仮面弁士さま
お世話になります。

目的の動作を実現できました。
サンプルまで頂き、本当に
ありがとうございましたm(__)m。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -