7

ボタンを1回クリックしたときにイベントを発生させるのではなく、ボタンをダブルクリックしたときにのみイベントを発生させたい。残念ながら、ダブルクリックイベントはIDEのイベントのリストに表示されません。

誰かがこの問題の良い解決策を知っていますか?ありがとうございました!

4

4 に答える 4

22

標準のボタンはダブルクリックに反応しません。Button.DoubleClickイベントのドキュメントを参照してください。Windowsではボタンは常にクリックに反応し、ダブルクリックには反応しないため、ダブルクリックには反応しません。

ユーザーが嫌いですか?システム内の他のボタンとは異なる動作をするボタンを作成することになり、一部のユーザーはそれを理解できないためです。

Buttonつまり、これに対するイベントから派生した別のコントロールを作成する必要があります( SetStyleは保護されたメソッドであるため)

public class DoubleClickButton : Button
{
    public DoubleClickButton()
    {
        SetStyle(ControlStyles.StandardClick | ControlStyles.StandardDoubleClick, true);
    }
}

次に、DoubleClickイベントハンドルはまだIDEに表示されないため、コードに手動で追加する必要があります。

public partial class Form1 : Form {
    public Form1()  {
        InitializeComponent();
        doubleClickButton1.DoubleClick += new EventHandler(doubleClickButton1_DoubleClick);
    }

    void doubleClickButton1_DoubleClick(object sender, EventArgs e)  {
    }
}
于 2012-11-21T04:45:11.477 に答える
0

これを使って。コードは機能します。

public class DoubleClickButton : Button
            {
                public DoubleClickButton()
                {
                    SetStyle(ControlStyles.StandardClick | 
ControlStyles.StandardDoubleClick, true);
                }
            }

 DoubleClickButton button = new DoubleClickButton();
 button.DoubleClick += delegate (object sender, EventArgs e)
        {
           //codes
        };
于 2020-12-23T11:37:03.073 に答える
-1

私は以前、次のようにオブジェクトにMouseDoubleClickイベントを追加していました。

this.pictureBox.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.pictureBox_MouseDoubleClick);

于 2017-04-18T07:51:43.543 に答える
-2

ダブルクリックは、互いに時間t内にある2つの通常のクリックイベントです。

これは、t=0.5秒と仮定した場合の擬似コードです。

button.on('click' , function(event) {
    if (timer is off or more than 0.5 milliseconds)
        restart timer
    if (timer is between 0 and 0.5 milliseconds)
        execute double click handler
})
于 2012-11-21T17:09:19.287 に答える