2

垂直方向にドラッグ可能なタブ ページ内にユーザー コントロールがあります。コントロールも選択可能です。ユーザーがアイテムをクリックして選択できるようにしたいのですが、ドラッグが終了したときに MouseClick イベントを発生させたくありません。MouseUp イベントのみが発生するはずです。すなわち。ユーザーがドラッグを終了した後は、項目を選択しないでください。何かアドバイス?

4

2 に答える 2

1

これはWinFormsだと思います。

ユーザー コントロールがあると言うとき、から派生したクラスがあることを意味しますUserControlか? その場合、OnMouseClickメソッドをオーバーライドして を呼び出さないようbase.OnMouseClick(e)にすることができます。これにより、起動が妨げMouseClickられます。

SamHi が提案したようにtrue、ドラッグの開始時に設定されたブール値を使用できます。一度OnMouseClick呼び出されたら、そのブール値を false に設定して、ドラッグが完了した後にマウス クリックを発生させることができます。

例:

public class MyUserControl : UserControl
{
    bool dragging = false;

    // ...

    protected override void OnMouseClick(MouseEventArgs e)
    {
        if (dragging)
        {
            // We've finished dragging, don't call MouseClick
            dragging = false;
            return;
        }

        // Not dragging, fire MouseClick
        base.OnMouseClick(e);
    }
}
于 2012-06-15T04:44:59.990 に答える
0

ドラッグしている間は true に等しいドラッグ ブールを使用し、短いタイマーの実行後にそれをオフにしてみてください。このようにして、MouseClick イベントに if ステートメントを追加して、最近ドラッグされたかどうかを確認できます。

于 2012-06-15T02:50:51.330 に答える