TouchToolKit for WinForms
タップ関連イベントの検出
TouchToolKit の使い方 > C1TouchEventProviderコンポーネント > タップ関連イベントの検出

C1TouchEventProviderコンポーネントでは、タップ、ダブルタップ、右タップおよびホールド(長押し)を検出できます。

タップイベントの検出

ここではButtonコントロールでマウスによるクリックと、タッチによるタップを区別する方法を示します。マウスに対応するイベントは、各コントロールのイベント(Control.ClickイベントやControl.MouseDownイベント)を使用します。

  1. Buttonコントロール(Button1)をフォームに追加します。
  2. C1TouchEventProviderコンポーネント(C1TouchEventProvider1)をフォームに追加します。
  3. Button1を選択し、プロパティウィンドウから「C1TouchEventProvider1のEnableTouchEvents」プロパティをTrueに設定します。
  4. Button1を選択し、Clickイベントに下記のコードを追加します。
  5. C1TouchEventProvider1を選択し、Tappedイベントに下記のコードを追加します。
  6. プロジェクトを実行し、Button1をクリックまたはタップします。

Visual Basic コードの書き方

Visual Basic
コードのコピー
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    MessageBox.Show("クリックされました")
End Sub

Private Sub C1TouchEventProvider1_Tapped(sender As Object, e As C1.Win.C1TouchToolKit.TappedEventArgs) Handles C1TouchEventProvider1.Tapped
    If e.TargetControl Is Button1 Then
        MessageBox.Show("タップされました")
    End If
End Sub

C# コードの書き方

C#
コードのコピー
private void button1_Click(object sender, EventArgs e)
{
    MessageBox.Show("クリックされました");
}

private void C1TouchEventProvider1_Tapped(object sender, C1.Win.C1TouchToolKit.TappedEventArgs e)
{
    if (e.TargetControl == button1)
    {
        MessageBox.Show("タップされました");
    }
}

タップ&ホールドの検出

Windowsではタッチの長押しが右クリックに変換されます。C1ToucheventProvider.EnablePressAndHoldプロパティをFalseに変更すると、C1ToucheventProvider.RightTappedイベントが発生しなくなり、長押しを繰り返しのクリック操作として検出できます。たとえばスピンボタンをマウスのボタンで長押しした場合に数値をカウントアップするような操作に割り当てることができます。

以下はNumericUpDownコントロールに対して、スピンボタンの代用となる2つのボタンを実装する例です。

  1. NumericUpDownコントロール(NumericUpDown1)をフォームに追加します。
  2. Buttonコントロールを2つ(Button1、Button2)フォームに追加し、以下のように実装します。

    Visual Basic コードの書き方

    Visual Basic
    コードのコピー
    Imports C1.Win.C1TouchToolKit
    
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Button1.Text = "+"
        Button2.Text = "-"
        C1TouchEventProvider1.SetEnableTouchEvents(Button1, True)
        C1TouchEventProvider1.SetEnableTouchEvents(Button2, True)
        C1TouchEventProvider1.EnablePressAndHold = False
    End Sub
    
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        If NumericUpDown1.Value < NumericUpDown1.Maximum Then
            NumericUpDown1.Value += 1
        End If
    End Sub
    
    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        If NumericUpDown1.Value > NumericUpDown1.Minimum Then
            NumericUpDown1.Value -= 1
        End If
    End Sub
    

    C# コードの書き方

    C#
    コードのコピー
    using C1.Win.C1TouchToolKit;
    
    private void Form1_Load(object sender, EventArgs e)
    {
        button1.Text = "+";
        button2.Text = "-";
        C1TouchEventProvider1.SetEnableTouchEvents(button1, true);
        C1TouchEventProvider1.SetEnableTouchEvents(button2, true);
        C1TouchEventProvider1.EnablePressAndHold = false;
    }
    
    private void button1_Click(object sender, EventArgs e)
    {
        if (numericUpDown1.Value < numericUpDown1.Maximum)
        {
            numericUpDown1.Value += 1;
        }
    }
    
    private void button2_Click(object sender, EventArgs e)
    {
        if (numericUpDown1.Value > numericUpDown1.Minimum)
        {
            numericUpDown1.Value -= 1;
        }
    }
    
  3. プロジェクトを実行し、Button1またはButton2をタッチで長押しします。