ここでは、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("マルチタッチがサポートされています。"); } } |