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