我刚刚完成了一个触摸屏信息亭的开发,没有物理键盘。我也发现 osk 限制。
在平面设计师的帮助下,我们创建了自己的键盘、带有按键背景的按钮以及与按钮意图相匹配的内容(或标签)。将大多数按钮分配给在选定控件的 CaretIndex 处插入文本的公共事件处理程序。
对 DEL 和 ENTER 使用单独的处理程序。
对于我的应用程序,我弹出一个带有文本框的新窗口、所需的键盘(字母、数字等)、提示用户输入的有用句子和显示所需格式的占位符。
它工作得非常好,让我们可以完全控制用户体验。
private void key_Click(object sender, RoutedEventArgs e)
{
_activeControl.SelectedText = (string)((Control)sender).Tag;
_activeControl.CaretIndex += _activeControl.SelectedText.Length;
_activeControl.SelectionLength = 0;
_activeControl.Focus();
}
private void btnDEL_Click(object sender, RoutedEventArgs e)
{
var ci = _activeControl.CaretIndex;
if (ci > 1)
{
_activeControl.Text = _activeControl.Text.Remove(
_activeControl.CaretIndex - 1, 1);
_activeControl.SelectionStart = ci - 1;
}
else if (_activeControl.Text.Length > 0)
{
_activeControl.Text = _activeControl.Text.Remove(0, 1);
}
_activeControl.Focus();
}
private void btnEnter_Click(object sender, RoutedEventArgs e)
{
// Raise an event here, signalling your application
// to validate and move to the next field
}