使用WPF(使用C#和LinqToXml),我正在复制现有纸质表单的无纸化版本。现有表单包括一些每个框一个字符的文本字符串。我已经使用XAML复制了纸质表单的外观。如何向单字符TextBox添加代码,以便在填充后自动将控制发送到下一个TextBox (而不需要用户使用Tab键切换到下一个TextBox)?此外,这些TextBox序列便于关键字段值的输入。一旦最后一个单字符的TextBox从键盘接收到一个值,我如何编写一个事件触发器来自动从Xml数据文件中检索适当的数据记录字段值?我是否需要在表单上包含一个按钮,或者是否可以对表单进行编码,以便在填写最后一个单字符的TextBox时自动进行检索?
发布于 2010-10-29 07:31:47
要实现您想要做的事情,最好的方法可能是创建一个类来表示代码,该类通过绑定到textboxes的属性(或通过一个属性作为字符串,然后使用ValueConverter更新相应的数字)公开数字,并实现INotifyPropertyChanged接口(每次设置属性时都会引发PropertyChanged事件)。然后,您可以创建一个从代码对象侦听PropertyChanged事件的处理程序,检查所有数字是否已填写,如果是,则从XML加载数据。或者,您也可以在对象内部执行该检查,然后引发其他事件,让应用程序知道输入了完整的代码。
至于如何移动到下一个文本框,您可以创建一个调用UIElement.MoveFocus()方法的TextChanged事件处理程序,并将其注册到所有文本框中,如下所示:
private void textChanged(object sender, TextChangedEventArgs e)
{
TextBox textBox = sender as TextBox;
if (textBox != null && textBox.Text.Length == 1)
{
TraversalRequest tr = new TraversalRequest(FocusNavigationDirection.Next);
textBox.MoveFocus(tr);
}
}您可能还希望将每个文本框的MaxLength设置为1,以防止复制和粘贴文本等,您还可以查看类似ValidationRules的内容,以检查非法字符等。
希望这对你有所帮助(只要问你是否需要帮助)。
向您致敬,詹姆斯
https://stackoverflow.com/questions/4042835
复制相似问题