PowerTools PlusPak for Windows Forms 8.0J
2重クリックの防止

2重クリックの防止
GcButtonコントロールには、クリックイベントの処理中に誤ってもう一度ボタンをクリックしてしまった場合などに、イベントを2重に発生させないようにするPreventMultipleClickプロパティを搭載しています。
PreventMultipleClickプロパティをTrueに設定することでイベント発生中にボタンが押下されてもClickイベントは発生しません。
' 2重クリックを防止します。
GcButton1.PreventMultipleClick = True
// 2重クリックを防止します。
gcButton1.PreventMultipleClick = true;
たとえばボタンクリックで課金処理を行う場合などに、誤ってボタンが複数回クリックされることを防ぐことができます。
以下の手順で動作を確認できます。
  1. 新規フォームにGcButtonコントロール、標準CheckBox、標準ProgressBar、標準Labelを配置します。
  2. 以下のサンプルコードを実装します。
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        GcButton1.PreventMultipleClick = False
    End Sub
    
    Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
        GcButton1.PreventMultipleClick = CheckBox1.Checked
    End Sub
    
    Private Sub GcButton1_Click(sender As Object, e As EventArgs) Handles GcButton1.Click
        Label1.Text = ""
    
        ProgressBar1.Maximum = 1000
    
        For i As Integer = 0 To 999
            System.Threading.Thread.Sleep(1)
            ProgressBar1.Value = i + 1
            ProgressBar1.Value = i
        Next
        ProgressBar1.Maximum -= 1
    
        Label1.Text = "処理完了"
    End Sub
                
    private void Form1_Load(object sender, EventArgs e)
    {
        gcButton1.PreventMultipleClick = false;
    }
    
    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        gcButton1.PreventMultipleClick = checkBox1.Checked;
    }
    
    private void gcButton1_Click(object sender, EventArgs e)
    {
        label1.Text = "";
    
        progressBar1.Maximum = 1000;
        for (int i = 0; i < 1000; i++)
        {
            System.Threading.Thread.Sleep(2);
            progressBar1.Value = i + 1;
            progressBar1.Value = i;
        }
        progressBar1.Maximum--;
    
        label1.Text = "処理完了";
    }
                
  3. プロジェクトを実行します。
  4. ChecckBoxにチェックがないことを確認してGcButtonコントロールを押下します。


  5. プログレスバーの動作中に再度GcButtonコントロールを押下します。


    →プログレスバーが溜まると同時に再度GcButtonコントロールのクリックイベントが発生します。


  6. CheckBoxをチェックしてGcButtonコントロールを押下します。


  7. プログレスバーの動作中に再度GcButtonコントロールを押下します。


    →プログレスバーの動作中にGcButtonコントロールを押下してもクリックイベントは発生しません。


参照