Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 创建一个只接受数字输入的自定义文本框_C#_Wpf - Fatal编程技术网

C# 创建一个只接受数字输入的自定义文本框

C# 创建一个只接受数字输入的自定义文本框,c#,wpf,C#,Wpf,可能重复: 我目前正在开发一个WPF应用程序,我希望有一个文本框,其中只能有数字条目(包括点和减号) 我知道如何在Windows窗体中执行此操作,但WPF事件对我来说非常不同。只需为keydown事件添加一个处理程序,并为您不希望允许的密钥设置e.handled=true。示例位于页面上,处理alt-p和alt-n,但原理相同。您将需要修改此代码,因为它不是为取消按键笔划而设计的,但它确实显示了如何处理keydown事件 <Window x:Class="Gabe2a.MainW

可能重复:

我目前正在开发一个WPF应用程序,我希望有一个文本框,其中只能有数字条目(包括点和减号)


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

只需为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);
    }

私有无效窗口\u KeyDown(对象发送方,KeyEventArgs e)
{
//Debug.WriteLine(“主窗口窗口下键”+e.Key.ToString());
e、 已处理=错误;
if(e.KeyboardDevice.Modifiers==ModifierKeys.Alt)/&&e.KeyboardDevice.IsKeyDown(Key.righalt))
{
if(e.Key==Key.System&&e.SystemKey==Key.N)
{
e、 已处理=正确;
App.StaticGabeLib.Search.NextDoc();
}
else if(e.Key==Key.System&&e.SystemKey==Key.P)
{
e、 已处理=正确;
App.StaticGabeLib.Search.PriorDoc();
}
}
base.OnKeyDown(e);
}
将向下键附加到文本框的示例

            <TextBox KeyDown="TBKeydown" />


如何为文本框实现上述代码的具体示例(如果可以避免,您不希望对整个窗口执行此操作),您只需将事件附加到文本框。事件语法对于任何类型的控件都是相同的。对于WPF,有一个非常有用的冒泡事件,您可能需要仔细阅读。