2009-07-15 4 views
0

C#、Visual Studio 2005のフォームにボタンを配置し、MouseHoverやMouseDownなどのボタンイベントによってトリガされるアクションがあると、私がホバリングを続けたり、左ボタンを押したままにしても、アクションを定義する関数を呼び出してください。この場合、私はグラフィックオブジェクトを回転または翻訳して移動しようとしています。私は変換機能を繰り返し呼び出すためにマウスをクリックし続けたいと思っています。マウスをホバリングしたままにするかボタンを押したままにしておきます。私自身の行動を止めるまで行動を維持するものは何ですか?Windowsフォームマウスイベント中に連続アクションを作成する

答えて

0

MouseEnterにフラグを設定して、フラグがtrueの間、処理を続けます。 MouseLeaveでフラグをfalseに設定します。

+0

Iは、次のコードで上記の試み: プライベートボイドMouseEnter_ZoomIn(オブジェクト送信者、EventArgsの電子) { more = true; (詳細== true) { c1Chart3D1.ChartArea.View.ViewportScale * = ZoomMultiple; } } // MOUSEENTER_ZOOMIN() // ------------------------------------ プライベートvoid MouseLeave_Stop(オブジェクト送信者、EventArgs e) { more = false; } 私は、MouseLeaveイベントがwhileループを殺すことを望んでいましたが、それはしませんでした。 – user32848

0

イベントのMouseDown、MouseMove、MouseUpの組み合わせを使用する必要があります。ここ

開始する小さな簡略化した例:

private void OnMouseDown(object sender, EventArgs e) 
{ 
    //hit test to check if the mouse pointer is on a graphical object 
    _myHitObject = the_selected_object 
} 

private void OnMouseMove(object sender, EventArgs e) 
{ 
    if(_myHitObject != null) 
     //do your action relative to the mouse movements. 
} 

private void OnMouseUp(object sender, EventArgs e) 
{ 
    _myHitObject = null; 
} 
0

溶液はDoEvents関数を使用することである()注目すべきMouseLeaveイベントおよびクラス変数を変更するために、「もっと」を可能にする:

プライベートボイドMouseEnter_ZoomIn(オブジェクト送信者、のEventArgs電子)

{

more = true; 

while (more == true) 

{ 
    c1Chart3D1.ChartArea.View.ViewportScale *= ZoomMultiple; 
    Application.DoEvents(); 

} 

} // MOUSEENTER_ZOOMIN()

// -------------------------------------

プライベートボイドMouseLeave_Stop(オブジェクト送信者、のEventArgs電子)

{

more = false; 

}

関連する問題