2009-08-25 13 views
0

私はカスタムリストを開発しています。これは、基本的にはFlowLayoutPanelで垂直方向にスタックされたusercontrolsで構成されています。私はそれが選択されたときにリスト項目に表示されるボタンを追加できるように、このように書いています。ユーザコントロール内のすべてのクリックイベントをキャプチャする

リストアイテムコントロールにはいくつかのラベルといくつかのパネルがあるので、リストアイテム全体をクリックして(ボタンを選択して表示させるかどうかを判断するには)、クリックイベントハンドラを追加する必要がありますコントロールのすべてのクリックイベントをキャプチャすることで、KeyPreviewと同じように簡単な方法があるのだろうかと思っていたのですが、クリックイベントがありました。

ありがとうございました。

答えて

0

ユーザーコントロールの上部に四角形を追加し、透明なブラシでペイントしてからクリックハンドラを追加します。

アンドリュー

+0

長方形ですか? System.Drawing.Rectangleのように? –

+0

http://stackoverflow.com/questions/347439/custom-controls-in-c-winforms-mouse-event-question –

0

私はそうのようにWndProcをオーバーライドすることで、最終的にそれを解決:

public partial class ListItem: UserControl 
{ 
    private const int WM_MOUSEACTIVATE = 0x0021; 

    protected override void WndProc(ref Message m) 
    { 
     if(m.Msg == WM_MOUSEACTIVATE) 
     { 
      Debug.Print("Activated!"); 
     } 

     base.WndProc(ref m); 
    } 
} 

私はこれはおそらく最も簡単な解決策である数えます。それでも、Andrewの提案に感謝します。

関連する問題