创建一个只接受数字条目的自定义TextBox

时间:2011-08-09 23:12:02

标签: c# wpf

  

可能重复:
  How do I get a TextBox to only accept numeric input in WPF?

我目前正在开发一个WPF应用程序,我想要一个只能包含数字条目的TextBox(包括点和减号)。

我知道如何在Windows窗体中执行此操作,但WPF事件与我非常不同。

2 个答案:

答案 0 :(得分:0)

我找到了一个类似的帖子How do I get a TextBox to only accept numeric input in WPF?,应该能够回答你的问题......

答案 1 :(得分:0)

只需为keydown事件添加处理程序,并为您不想允许的键设置e.handled = true。该示例位于页面上并处理alt-p和alt-n,但原理相同。您将需要修改此代码,因为它不是为取消键击而设计的,但它确实显示了如何处理keydown事件。

    <Window x:Class="Gabe2a.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:diag="clr-namespace:System.Diagnostics;assembly=WindowsBase"
    DataContext="{Binding Source={x:Static Application.Current}}"
    Title="Gabriel Main" Height="600" Width="800" KeyDown="Window_KeyDown">

    private void Window_KeyDown(object sender, KeyEventArgs e)
    {
        // Debug.WriteLine("Main Window Window_KeyDown " + e.Key.ToString());
        e.Handled = false;
        if (e.KeyboardDevice.Modifiers == ModifierKeys.Alt) //  && e.KeyboardDevice.IsKeyDown(Key.RightAlt))
        {
            if (e.Key == Key.System && e.SystemKey == Key.N)
            {
                e.Handled = true;
                App.StaticGabeLib.Search.NextDoc();
            }
            else if (e.Key == Key.System && e.SystemKey == Key.P)
            {
                e.Handled = true;
                App.StaticGabeLib.Search.PriorDoc();
            }
        }
        base.OnKeyDown(e);
    }

将KeyDown附加到TextBox的示例

            <TextBox KeyDown="TBKeydown" />