ボタンを1回クリックしたときにイベントを発生させるのではなく、ボタンをダブルクリックしたときにのみイベントを発生させたい。残念ながら、ダブルクリックイベントはIDEのイベントのリストに表示されません。
誰かがこの問題の良い解決策を知っていますか?ありがとうございました!
ボタンを1回クリックしたときにイベントを発生させるのではなく、ボタンをダブルクリックしたときにのみイベントを発生させたい。残念ながら、ダブルクリックイベントはIDEのイベントのリストに表示されません。
誰かがこの問題の良い解決策を知っていますか?ありがとうございました!
標準のボタンはダブルクリックに反応しません。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) {
}
}
これを使って。コードは機能します。
public class DoubleClickButton : Button
{
public DoubleClickButton()
{
SetStyle(ControlStyles.StandardClick |
ControlStyles.StandardDoubleClick, true);
}
}
DoubleClickButton button = new DoubleClickButton();
button.DoubleClick += delegate (object sender, EventArgs e)
{
//codes
};
私は以前、次のようにオブジェクトにMouseDoubleClickイベントを追加していました。
this.pictureBox.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.pictureBox_MouseDoubleClick);
ダブルクリックは、互いに時間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
})