微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Windows 8应用程序中的Numericbox的替代品?

我正试图find一个很好的替代scheme在Windows 8瓷砖应用程序中的NumericBox。 我试着使用相同的数字框,为Windows窗体存在,但得到了一个错误,说这些不支持(?)的Windows 8应用程序。 我注意到,应用程序的TextBox元素有一个可以设置为“Number”的InputScope,但是它仍然允许用户input他想要的任何字符。 我认为InputScope不会做我认为的事情。

我目前正在使用文本框进行pipe理,但是由于我正在进行计算,所以当我想要更新界面时,文本必须不断地转换为十进制,然后再转换为文本,除了必须执行多个检查以确保用户不要input非数字字符。 这是非常繁琐的,对Windows Form非常熟悉,这似乎是在一个错误的方向迈出的一步。 我必须失去明显的东西?

简单的grep任何一年

search10个连续的单个数字

如何在linux中模拟集成的数字键盘光标键

我不熟悉NumericTextBox ,但这里是一个简单的C#/ XAML实现,只允许数字和十进制字符。

它所做的就是重写OnKeyDown事件; 基于被按下的键,它允许或不允许该事件到达基本的TextBox类。

我应该注意到,这个实现是针对Windows Store应用程序的 – 我相信你的问题是关于这种类型的应用程序,但我不是100%确定的。

public class MyNumericTextBox : TextBox { protected override void OnKeyDown(KeyRoutedEventArgs e) { HandleKey(e); if (!e.Handled) base.OnKeyDown(e); } bool _hasDecimal = false; private void HandleKey(KeyRoutedEventArgs e) { switch (e.Key) { // allow digits // Todo: keypad numeric digits here case Windows.System.VirtualKey.Number0: case Windows.System.VirtualKey.Number1: case Windows.System.VirtualKey.Number2: case Windows.System.VirtualKey.Number3: case Windows.System.VirtualKey.Number4: case Windows.System.VirtualKey.Number5: case Windows.System.VirtualKey.Number6: case Windows.System.VirtualKey.Number7: case Windows.System.VirtualKey.Number8: case Windows.System.VirtualKey.Number9: e.Handled = false; break; // only allow one decimal // Todo: handle deletion of decimal... case (Windows.System.VirtualKey)190: // decimal (next to comma) case Windows.System.VirtualKey.Decimal: // decimal on key pad e.Handled = (_hasDecimal == true); _hasDecimal = true; break; // pass varIoUs control keys to base case Windows.System.VirtualKey.Up: case Windows.System.VirtualKey.Down: case Windows.System.VirtualKey.Left: case Windows.System.VirtualKey.Right: case Windows.System.VirtualKey.Delete: case Windows.System.VirtualKey.Back: case Windows.System.VirtualKey.Tab: e.Handled = false; break; default: // default is to not pass key to base e.Handled = true; break; } } }

这里是一些示例XAML。 请注意,它假定MyNumericTextBox位于项目名称空间中。

<StackPanel Background="Black"> <!-- custom numeric textBox --> <local:MyNumericTextBox /> <!-- normal textBox --> <TextBox /> </StackPanel>

WinRT XAML Toolkit的Numericupdown控件可能就是你要找的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐