平板电脑) (最佳做法

使用 PenInputPanel 对象时,需要牢记一些准则。

首选 InkEdit 控件

InkEdit 是将 PenInputPanel 对象附加到的首选控件。 InkEdit 控件为 文本服务框架 (TSF) 提供支持。

在 InkEdit 控件上禁用墨迹模式

附加到 InkEdit 控件时,将 InkEdit 控件的 InkMode 属性设置为 InkMode 值。 如果未将 InkMode 属性设置为 InkMode 值,InkEdit 控件会将第一个点击解释为笔划,将其传递给识别器,并将文本插入 InkEdit 控件中。 由于已经附加了用于接受墨迹输入的 PenInputPanel 对象,因此无需也为墨迹输入启用 InkEdit 控件。

使用无窗口控件

PenInputPanel 对象附加到包含多个无窗口控件的父窗口时,当焦点在无窗口子级之间移动时, PenInputPanel 对象不知道如何跟踪插入点。 当焦点在输入挂起时从一个无窗口控件移动到另一个控件时,可能会将手写输入发送到错误的子级。

若要在无窗口环境中使用 PenInputPanel 对象,可以使用以下技术:

  1. 实例化 TextBox 控件,并将其置于无窗口控件上。
  2. PenInputPanel 对象附加到新的文本框控件。
  3. 让文本框控件从 PenInputPanel 对象收集识别的文本。
  4. 当焦点远离文本框控件时,调用 PenInputPanel 对象的 CommitPendingInput 方法。
  5. 将文本框控件中识别的文本复制到无窗口子级。
  6. 通过将 PenInputPanel 对象的 AttachedEditControl (托管代码仅) 属性或 AttachedEditWindow 属性设置为 null 来分离 PenInputPanel 对象。
  7. 销毁文本框控件。

PenInputPanel 类

Microsoft.Ink.PenInputPanel

文本服务框架