C1Zoomコンポーネントでは、次のイベントを使用してズーム時の処理をカスタマイズできます。
名前 | 説明 |
---|---|
ControlAutoShowing | C1Zoomコンポーネントがターゲットコントロールの表示を開始する前に発生します。 |
ControlBoundsZooming | C1Zoomコンポーネントがターゲットコントロールの境界のズームを開始する前に発生します。 |
ControlFontZooming | C1Zoomコンポーネントがターゲットコントロールのフォントのズームを開始する前に発生します。 |
ManipulationStarting | マニピュレーションプロセッサが最初に作成されたときに発生します。 |
ZoomFactorChanged | ZoomFactorプロパティが変更されたときに発生します。 |
C1Zoom.ControlAutoShowingイベントを使用すると、C1Zoomコンポーネントによってフォームが自動的にスクロールされる際に、コントロールの情報やスクロールが発生した理由によってこれをキャンセルするかどうかを制御できます。たとえば、コントロールが一定サイズ表示されている場合は自動スクロールしない、といった処理が可能です。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
Imports C1.Win.C1TouchToolKit Private Sub C1Zoom1_ControlAutoShowing(sender As System.Object, e As ControlAutoShowingEventArgs) Handles C1Zoom1.ControlAutoShowing ' コントロールがすべて表示されているときは自動スクロールをしません。 If C1Zoom1.GetDisplayRectangle(e.Showingcontrol).Size = e.ShowingControl.Size Then e.Cancel = True End If ' コントロールの一部が表示されているときは自動スクロールをしません。 If C1Zoom1.GetDisplayRectangle(e.ShowingControl).IsEmpty Then e.Cancel = True End If ' コントロールの高さが30ピクセル以上表示されているときは自動スクロールをしません。 If C1Zoom1.GetDisplayRectangle(e.ShowingControl).Size.Height > 30 Then e.Cancel = True End If End Sub |
C# コードの書き方
C# |
コードのコピー
|
---|---|
using C1.Win.C1TouchToolKit; private void gcZoom1_ControlAutoShowing(object sender, ControlAutoShowingEventArgs e) { // コントロールがすべて表示されているときは自動スクロールをしません。 if (gcZoom1.GetDisplayRectangle(e.ShowingControl).Size == e.ShowingControl.Size) { e.Cancel = true; } // コントロールの一部が表示されているときは自動スクロールをしません。 if (!gcZoom1.GetDisplayRectangle(this.button1).IsEmpty) { e.Cancel = true; } // コントロールの高さが30ピクセル以上表示されているときは自動スクロールをしません。 if (gcZoom1.GetDisplayRectangle(this.button1).Size.Height > 30) { e.Cancel = true; } } |
C1Zoom.ControlBoundsZoomingイベントを使用して、コントロールのズームを検出できます。また、C1Zoom.ControlFontZoomingイベントを使用してフォントのズームを検出できます。
通常、ユーザー定義のズームの動作を複数のプロジェクト間で共有するにはZoomPolicyが適しています。詳細は「ズームとコントロール」を参照してください。
C1Zoom.ControlBoundsZoomingイベントでは、組み込みのズーム処理をキャンセルしてユーザー定義のコードをコントロールに対して実行できます。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
Imports C1.Win.C1TouchToolKit Private Sub C1Zoom1_ControlBoundsZooming(sender As System.Object, e As ControlBoundsZoomingEventArgs) Handles C1Zoom1.ControlBoundsZooming If e.TargetControl Is Button1 Then e.Handled = True End If End Sub |
C# コードの書き方
C# |
コードのコピー
|
---|---|
using C1.Win.C1TouchToolKit; private void gcZoom1_ControlBoundsZooming(object sender, ControlBoundsZoomingEventArgs e) { if (e.TargetControl == button1) { e.Handled = true; } } |
C1Zoom.ControlFontZoomingイベントでは組み込みのフォントズームをキャンセルしてユーザー定義のコードを実装できます。このイベントで対象のコントロールのフォントをカスタマイズする場合、対象のコントロールのフォントに明示的にフォントが指定されている必要があります。フォントが指定されていない場合、親コントロールのフォントが使用されます。また、C1Zoom.InnerPanelプロパティに一致するコントロールは除外される必要があります。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
Imports C1.Win.C1TouchToolKit Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Button1.Font = New Font("MS UI Gothic", 9.0F) End Sub Private Sub C1Zoom1_ControlFontZooming(sender As System.Object, e As ControlFontZoomingEventArgs) Handles C1Zoom1.ControlFontZooming If e.TargetControl Is Button1 Then e.Handled = True End If End Sub |
C# コードの書き方
C# |
コードのコピー
|
---|---|
using C1.Win.C1TouchToolKit; private void Form1_Load(new Font("MS UI Gothic" , 9.0f); } private void gcZoom1_ControlFontZooming(object sender, ControlFontZoomingEventArgs e) { if (e.TargetControl == button1) { e.Handled = true; } } |
C1Zoom.ManipulationStartingイベントを使用すると、タッチ操作でズームやスクロール(パン)が開始されたときに、この処理を実行するかどうかを変更できます。たとえば、フォーム画面のスクロールよりもListBoxコントロールのスクロールを優先したい場合、次のようにコーディングします。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
Imports C1.Win.C1TouchToolKit Private Sub C1Zoom1_ManipulationStarting(sender As System.Object, e As ZoomManipulationStartingEventArgs) Handles C1Zoom1.ManipulationStarting If TypeOf e.TargetControl Is TextBox AndAlso DirectCast(e.TargetControl, TextBox).Text.Length > 0 Then e.Mode = ZoomManipulationModes.Zoom Else e.Mode = ZoomManipulationModes.All End If End Sub |
C# コードの書き方
C# |
コードのコピー
|
---|---|
using C1.Win.C1TouchToolKit; private void gcZoom1_ManipulationStarting(object sender, ZoomManipulationStartingEventArgs e) { if (e.TargetControl is ListBox) { e.Mode = ZoomManipulationModes.Zoom; } else { e.Mode = ZoomManipulationModes.All; } } |
TextBoxコントロールに文字列が存在する場合だけ、フォームのスクロールよりもTextBoxコントロール上の操作を優先する、といった細かな組み合わせも実装できます。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
Private Sub C1Zoom1_ManipulationStarting(sender As System.Object, e As C1.Win.C1TouchToolKit.ZoomManipulationStartingEventArgs) Handles C1Zoom1.ManipulationStarting If TypeOf e.TargetControl Is TextBox AndAlso DirectCast(e.TargetControl, TextBox).Text.Length > 0 Then e.Mode = C1.Win.C1TouchToolKit.ZoomManipulationModes.Zoom Else e.Mode = C1.Win.C1TouchToolKit.ZoomManipulationModes.All End If End Sub |
C# コードの書き方
C# |
コードのコピー
|
---|---|
private voidz gcZoom1_ManipulationStarting(object sender, C1.Win.C1TouchToolKit.ZoomManipulationStartingEventArgs e) { if (e.TargetControl is TextBox && ((TextBox)e.TargetControl).Text.Length > 0) { e.Mode = C1.Win.C1TouchToolKit.ZoomManipulationModes.Zoom; } else { e.Mode = C1.Win.C1TouchToolKit.ZoomManipulationModes.All; } } |
C1Zoom.ZoomFactorChangedイベントを使用すると、ズーム率が変わったときに処理を実行できます。たとえば、次のコードように現在のズーム率をタイトルバーに表示できます。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
Private Sub C1Zoom1_ZoomFactorChanged(sender As System.Object, e As System.EventArgs) Handles C1Zoom1.ZoomFactorChanged Me.Text = String.Format("{0:P}", C1Zoom1.ZoomFactor) End Sub |
C# コードの書き方
C# |
コードのコピー
|
---|---|
private void gcZoom1_ZoomFactorChanged(object sender, EventArgs e) { this.Text = string.Format("{0:P}", gcZoom1.ZoomFactor); } |