InkEdit.Gesture 이벤트
업데이트: 2007년 11월
응용 프로그램 제스처가 인식될 때 발생합니다.
네임스페이스: Microsoft.Ink
어셈블리: Microsoft.Ink(Microsoft.Ink.dll)
구문
‘선언
Public Event Gesture As InkEditGestureEventHandler
‘사용 방법
Dim instance As InkEdit
Dim handler As InkEditGestureEventHandler
AddHandler instance.Gesture, handler
public event InkEditGestureEventHandler Gesture
public:
event InkEditGestureEventHandler^ Gesture {
void add (InkEditGestureEventHandler^ value);
void remove (InkEditGestureEventHandler^ value);
}
/** @event */
public void add_Gesture (InkEditGestureEventHandler value)
/** @event */
public void remove_Gesture (InkEditGestureEventHandler value)
JScript에서는 이벤트를 지원하지 않습니다.
설명
이벤트 처리기는 이 이벤트에 대한 데이터가 들어 있는 InkEditGestureEventArgs 형식의 인수를 받습니다.
InkEditGestureEventHandler 대리자를 만들 때는 이벤트를 처리할 메서드를 식별합니다. 이벤트를 이벤트 처리기와 연결하려면 대리자의 인스턴스를 해당 이벤트에 추가합니다. 대리자를 제거하지 않는 경우 이벤트가 발생할 때마다 이벤트 처리기가 호출됩니다.
이 이벤트가 발생하려면 InkEdit 컨트롤에 일련의 응용 프로그램 제스처에 대한 관심도가 있어야 합니다. 일련의 제스처에 대한 InkEdit 컨트롤의 관심도를 설정하려면 InkEdit.SetGestureStatus 메서드를 호출합니다. InkEdit 컨트롤은 여러 스트로크 제스처를 인식하지 않습니다.
구체적인 응용 프로그램 제스처의 목록은 ApplicationGesture 열거형 형식을 참조하십시오. 응용 프로그램 제스처에 대한 자세한 내용은 Using Gestures 및 Command Input on the Tablet PC을를 참조하십시오.
InkEdit 컨트롤에는 다음 제스처에 대한 기본 관심도와 동작이 지정되어 있습니다.
제스처 |
동작 |
---|---|
왼쪽 아래, 왼쪽 아래로 길게 |
Enter |
오른쪽 |
Space |
왼쪽 |
Backspace |
오른쪽 위, 오른쪽 위로 길게 |
Tab |
InkEdit 컨트롤에서는 Recognize 메서드를 마지막으로 호출하거나 인식 시간 제한이 마지막으로 발생한 이후에 제스처가 첫 번째 스트로크인 경우에만 Gesture 이벤트가 발생합니다.
Gesture 이벤트를 취소하면 Gesture 이벤트를 발생시킨 Stroke 개체에 대해 Stroke 이벤트가 발생합니다.
제스처에 대한 기본 동작을 변경하려면
Gesture 및 Stroke 이벤트에 대한 이벤트 처리기를 추가합니다.
Gesture 이벤트 처리기에서 제스처에 대한 Gesture 이벤트를 취소하고 해당 제스처에 대한 대체 동작을 수행합니다.
Stroke 이벤트 처리기에서 취소된 Gesture 이벤트를 발생시킨 Stroke 개체의 Stroke 이벤트를 취소합니다.
예제
이 예제에서는 Gesture 이벤트 및 Stroke 이벤트에 대한 알림을 신청하여 ApplicationGesture의 기능을 확장하는 방법을 보여 줍니다.
Gesture 이벤트가 발생하면 InkEdit 컨트롤의 제스처와 현재 상태를 조사합니다. 필요한 경우 제스처의 동작이 수정되고 이벤트가 취소됩니다.
Private Sub mInkEdit_Gesture(ByVal sender As Object, ByVal e As InkEditGestureEventArgs)
' There might be more than one gesture passed in InkEditGestureEventArgs
' The gestures are arranged in order of confidence from most to least
' This event handler is only concerned with the first (most confident) gesture
' and only if the gesture is ApplicationGesture.Left with strong confidence
Dim G As Gesture = e.Gestures(0)
If (ApplicationGesture.Left = G.Id And RecognitionConfidence.Strong = G.Confidence) Then
Dim pInkEdit As InkEdit = DirectCast(sender, InkEdit)
' by default, ApplicationGesture.Left maps to Backspace
' If the insertion point is at the beginning of the text
' and there is no text selected, then Backspace does not do anything.
' In this case, we will alter the gesture to map to Delete instead
If (0 = pInkEdit.SelectionStart And 0 = pInkEdit.SelectionLength And pInkEdit.Text.Length > 0) Then
' take out the first character of the string
pInkEdit.Text = pInkEdit.Text.Remove(0, 1)
' save the stroke ID in a class level var for use in the Stroke event
Me.mStrokeID = e.Strokes(0).Id
' cancel the gesture so it won't perform the default action
e.Cancel = True
End If
End If
End Sub
private void mInkEdit_Gesture(object sender, InkEditGestureEventArgs e)
{
// There might be more than one gesture passed in InkEditGestureEventArgs
// The gestures are arranged in order of confidence from most to least
// This event handler is only concerned with the first (most confident) gesture
// and only if the gesture is ApplicationGesture.Left with strong confidence
Gesture G = e.Gestures[0];
if (ApplicationGesture.Left == G.Id && RecognitionConfidence.Strong == G.Confidence)
{
InkEdit pInkEdit = (InkEdit)sender;
// by default, ApplicationGesture.Left maps to Backspace
// If the insertion point is at the beginning of the text
// and there is no text selected, then Backspace does not do anything.
// In this case, we will alter the gesture to map to Delete instead
if (0 == pInkEdit.SelectionStart && 0 == pInkEdit.SelectionLength && pInkEdit.Text.Length > 0)
{
// take out the first character of the string
pInkEdit.Text = pInkEdit.Text.Remove(0, 1);
// save the stroke ID in a class level var for use in the Stroke event
this.mStrokeID = e.Strokes[0].Id;
// cancel the gesture so it won't perform the default action
e.Cancel = true;
}
}
}
Stroke 이벤트가 발생하면 해당 스트로크가 Gesture 이벤트에서 동작이 수정된 제스처를 생성하는 데 사용된 경우 이벤트가 취소됩니다. 이렇게 하면 스트로크가 렌더링되지 않습니다.
Private Sub mInkEdit_Stroke(ByVal sender As Object, ByVal e As InkEditStrokeEventArgs)
e.Cancel = (e.Stroke.Id = Me.mStrokeID)
End Sub
private void mInkEdit_Stroke(object sender, InkEditStrokeEventArgs e)
{
e.Cancel = (e.Stroke.Id == this.mStrokeID);
}
플랫폼
Windows Vista
.NET Framework 및 .NET Compact Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.
버전 정보
.NET Framework
3.0에서 지원