2012-02-19 9 views
0

Panel - MouseDownMouseMoveMouseUpの一連のイベントがあります。私はまたのイベントハンドラをPanelに持っています。しかし、場合によっては、のMouseMoveハンドラを、Panelのハンドラに操作の「制御を移す」ことを希望します。問題は、アクションがLabelに「ロック」されているためです。のようなものは、がMouseUpまで呼び出されないため、役に立たないと考えられます。操作の「制御を移す」方法はありますか?ボタンがまだ押されているときのマウス操作の制御を転送する方法

ここに私が持っているものの簡単な例があります:(label1panel1です)。

public Form1() 
{ 
    InitializeComponent(); 
    label1.MouseDown += label1_MouseDown; 
} 

void label1_MouseDown(object sender, MouseEventArgs e) 
{ 
    panel1.MouseMove += panel1_MouseMove; 
} 

void panel1_MouseMove(object sender, MouseEventArgs e) 
{ 
    Text = "success"; 
} 

テキストは、MouseUpまで変更されません。

答えて

1

panel1_MouseMoveは、必要に応じてlabel1_MouseDownに電話することができます。

void label1_MouseDown(object sender, MouseEventArgs e) 
{ 
    panel1_MouseMove(null, EventArgs.Empty); 
} 
+0

+1。しかし、私の実際のアプリには2つの複雑なクラス(マウスイベントハンドラが多数あります)があり、ラベル用とパネル用です。私はラベルから操作を完全に切り離そうとしています。しかし、私は質問の私の処方で私は明確ではなかったと思う。 – ispiro

+0

'label1_MouseDown'の' label1_MouseUp'から購読を解除し、 'panel1_MouseDown'を再度購読した後に、購読することができます。 'label1.MouseUp - = label1_MouseUp;'のようなもの – mammadalius

関連する問題