ここでは、C1TouchEventProviderコンポーネントの基本的な使用方法について解説します。
C1TouchEventProviderコンポーネントでは、次のイベントを検出できます。
特定のコントロールでタッチやペンのイベントを検出するには、コントロールとC1TouchEventProviderコンポーネントを関連づける必要があります。
TextBoxコントロール(TextBox1)とC1TouchEventProviderコンポーネント(C1TouchEventProvider1)を関連づけるには、以下の手順で設定します。
また、コードから設定するにはC1TouchEventProvider.SetEnableTouchEventsメソッドを使用します。
Visual Basic コードの書き方
| Visual Basic | 
                         
                            コードのコピー
                         
                     | 
                
|---|---|
                        C1TouchEventProvider1.SetEnableTouchEvents(TextBox1, True)  | 
                |
C# コードの書き方
| C# | 
                         
                            コードのコピー
                         
                     | 
                
|---|---|
                        C1TouchEventProvider1.SetEnableTouchEvents(TextBox1, true);  | 
                |
C1TouchEventProviderコンポーネントのすべてのイベントはルーティングイベントです。これはC1TouchEventProviderコンポーネントがコンテナコントロールにアタッチされたとき、コンテナコントロールの子コントロールもC1TouchEventProviderコンポーネントのイベントで処理できることを意味します。
以下の例ではパネル上に3つのボタンがあります。そしてパネルにC1TouchEventProviderコンポーネントがアタッチされています。
パネル上のボタンをタップしたとき、C1TouchEventProvider.Tappedイベントが発生します。
Visual Basic コードの書き方
| Visual Basic | 
                         
                            コードのコピー
                         
                     | 
                
|---|---|
                        
Imports C1.Win.C1TouchToolKit
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    C1TouchEventProvider1.SetEnableTouchEvents(Panel1, True)
End Sub
Private Sub C1TouchEventProvider1_Tapped(sender As System.Object, e As TappedEventArgs) Handles C1TouchEventProvider1.Tapped
    If Not e.TargetControl Is Nothing Then
        Console.WriteLine(e.TargetControl.Name)
    End If
End Sub
                     | 
                |
C# コードの書き方
| C# | 
                         
                            コードのコピー
                         
                     | 
                
|---|---|
                        
using C1.Win.C1TouchToolKit;
private void Form1_Load(object sender, EventArgs e)
{
    C1TouchEventProvider1.SetEnableTouchEvents(panel1, true);
    C1TouchEventProvider1.Tapped += new EventHandler<TappedEventArgs>(C1TouchEventProvider1_Tapped);
 }
private void C1TouchEventProvider1_Tapped(object sender, TappedEventArgs e)
{
    if (e.TargetControl != null)
        Console.WriteLine(e.TargetControl.Name);
}
                     | 
                |
ルーティングイベントは親コントロールに対して子コントロールから先に発生します。たとえばPanel1の子コントロールとしてButton1があります。このときButton1とPanel1の両方がC1TouchEventProviderコンポーネントにアタッチされているものとします。タッチのイベントはButton1に対して先に発生し、その後Panel1に対して発生します。
Visual Basic コードの書き方
| Visual Basic | 
                         
                            コードのコピー
                         
                     | 
                
|---|---|
                        
Imports C1.Win.C1TouchToolKit
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    C1TouchEventProvider1.SetEnableTouchEvents(Button1, True)
    C1TouchEventProvider1.SetEnableTouchEvents(Panel1, True)
End Sub
Private Sub C1TouchEventProvider1_Tapped(sender As System.Object, e As TappedEventArgs) Handles C1TouchEventProvider1.Tapped
    If Not e.TargetControl Is Nothing Then
        Console.WriteLine("{0},{1}", DateTime.Now.ToString(), e.TargetControl.Name)
    End If
End Sub
                     | 
                |
C# コードの書き方
| C# | 
                         
                            コードのコピー
                         
                     | 
                
|---|---|
                        
using C1.Win.C1TouchToolKit;
private void Form1_Load(object sender, EventArgs e)
{
    C1TouchEventProvider1.SetEnableTouchEvents(button1, true);
    C1TouchEventProvider1.SetEnableTouchEvents(panel1, true);
    C1TouchEventProvider1.Tapped += new EventHandler<TappedEventArgs>(C1TouchEventProvider1_Tapped);
}
private void C1TouchEventProvider1_Tapped(object sender, TappedEventArgs e)
{
    if (e.TargetControl != null)
        Console.WriteLine("{0},{1}", DateTime.Now.ToString(), e.TargetControl.Name);
}
                     | 
                |
C1TouchEventProviderコンポーネントのすべてのイベント引数は、TouchRoutedEventArgsクラスを継承します。TouchRoutedEventArgsクラスを通してTargetControlプロパティとOriginalSourceプロパティを取得できます。TargetControlプロパティは現在のイベントのコントロールを示します。OriginalSourceプロパティはイベントを受け取った最初のコントロールを示します。
たとえばPanel1の子コントロールとしてButton1があります。このときButton1とPanel1の両方がC1TouchEventProviderコンポーネントにアタッチされているものとします。Button1がタッチイベントを受信したとき、TargetControlプロパティは"Button1"、OriginalSourceプロパティも"Button1"になります。Panel1がタッチイベントを受信したとき、TargetControlプロパティは"Panel1"、OriginalSourceプロパティは"Button1"になります。
Visual Basic コードの書き方
| Visual Basic | 
                         
                            コードのコピー
                         
                     | 
                
|---|---|
                        
Imports C1.Win.C1TouchToolKit
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    C1TouchEventProvider1.SetEnableTouchEvents(Button1, True)
    C1TouchEventProvider1.SetEnableTouchEvents(Panel1, True)
End Sub
Private Sub C1TouchEventProvider1_Tapped(sender As System.Object, e As TappedEventArgs) Handles C1TouchEventProvider1.Tapped
    If Not e.TargetControl Is Nothing Then
        Console.WriteLine("{0},{1},{2}", DateTime.Now.ToString(), e.TargetControl.Name, e.OriginalSource.Name)
    End If
End Sub
                     | 
                |
C# コードの書き方
| C# | 
                         
                            コードのコピー
                         
                     | 
                
|---|---|
                        
using C1.Win.C1TouchToolKit;
private void Form1_Load(object sender, EventArgs e)
{
    this.C1TouchEventProvider1.SetEnableTouchEvents(button1, true);
    this.C1TouchEventProvider1.SetEnableTouchEvents(panel1, true);
    this.C1TouchEventProvider1.Tapped += new EventHandler<TappedEventArgs>(C1TouchEventProvider1_Tapped);
}
private void C1TouchEventProvider1_Tapped(object sender, TappedEventArgs e)
{
    if (e.TargetControl != null)
        Console.WriteLine("{0},{1},{2}", DateTime.Now.ToString(), e.TargetControl.Name, e.OriginalSource.Name);
}
                     | 
                |
子コントロールでイベントを処理し、親コントロールでイベントを処理したくない場合、TouchRoutedEventArgs.HandledプロパティにTrueを設定することでイベントをブロックできます。
Visual Basic コードの書き方
| Visual Basic | 
                         
                            コードのコピー
                         
                     | 
                
|---|---|
                        
Imports C1.Win.C1TouchToolKit
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    C1TouchEventProvider1.SetEnableTouchEvents(Button1, True)
    C1TouchEventProvider1.SetEnableTouchEvents(Panel1, True)
End Sub
Private Sub C1TouchEventProvider1_Tapped(sender As System.Object, e As TappedEventArgs) Handles C1TouchEventProvider1.Tapped
    If Not e.TargetControl Is Nothing Then
        Console.WriteLine("{0},{1},{2}", DateTime.Now.ToString(), e.TargetControl.Name, e.OriginalSource.Name)
        e.Handled = True
    End If
End Sub
                     | 
                |
C# コードの書き方
| C# | 
                         
                            コードのコピー
                         
                     | 
                
|---|---|
                        
using C1.Win.C1TouchToolKit;
private void Form1_Load(object sender, EventArgs e)
{
    this.C1TouchEventProvider1.SetEnableTouchEvents(button1, true);
    this.C1TouchEventProvider1.SetEnableTouchEvents(panel1, true);
    this.C1TouchEventProvider1.Tapped += new EventHandler<TappedEventArgs>(C1TouchEventProvider1_Tapped);
}
private void C1TouchEventProvider1_Tapped(object sender, TappedEventArgs e)
{
    if (e.TargetControl != null)
    {
        Console.WriteLine("{0},{1},{2}", DateTime.Now.ToString(), e.TargetControl.Name, e.OriginalSource.Name);
        e.Handled = true;
    }
}
                     | 
                |
システム上の最大タッチ数を取得するためには、C1TouchEventProvider.MaximunTouchesプロパティを使用します。
以下コードでは、Windows 8またはWindows Server 2012またはより新しいバージョンのWindowsであるかどうかを検出し、マルチタッチがサポートされているかどうかをユーザーに表示する例です。
Visual Basic コードの書き方
| Visual Basic | 
                         
                            コードのコピー
                         
                     | 
                
|---|---|
                        
Imports C1.Win.C1TouchToolKit
' OSがWindows 8またはServer 2012、あるいはより新しいバージョンである場合、Trueを返します。
' それ以外の場合はFalseを返します。
Private Shared Function IsWindows8()
    If Environment.OSVersion.Version.Major >= 6 AndAlso Environment.OSVersion.Version.Minor >= 2 Then
        Return True
    Else
        Return False
    End If
End Function
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    If C1TouchEventProvider.MaximunTouches < 2 AndAlso IsWindows8() = False Then
        MessageBox.Show("マルチタッチはサポートされていません。")
    Else
        MessageBox.Show("マルチタッチがサポートされています。")
    End If
End Sub
                     | 
                |
Visual Basic コードの書き方
| Visual Basic | 
                         
                            コードのコピー
                         
                     | 
                
|---|---|
                        
using C1.Win.C1TouchToolKit;
// OSがWindows 8またはServer 2012、あるいはより新しいバージョンである場合、trueを返します。
// それ以外の場合はfalseを返します。
private static bool IsWindows8()
{
    if (Environment.OSVersion.Version.Major >= 6 && Environment.OSVersion.Version.Minor >= 2)
    {
        return true;
    }
    else
    {
        return false;
    }
}
private void button1_Click(object sender, EventArgs e)
{
    if (C1TouchEventProvider.MaximunTouches < 2 || IsWindows8() == false)
    {
        MessageBox.Show("マルチタッチはサポートされていません。");
    }
    else
    {
        MessageBox.Show("マルチタッチがサポートされています。");
    }
}
                     | 
                |