可能重複:
How do I get a TextBox to only accept numeric input in WPF?創建自定義文本框,其中只接受數字輸入
我目前工作的一個WPF應用程序,我想有一個文本框,只能有數字條目(包括點和減號)。
我知道如何在Windows窗體中執行此操作,但WPF事件與我完全不同。
可能重複:
How do I get a TextBox to only accept numeric input in WPF?創建自定義文本框,其中只接受數字輸入
我目前工作的一個WPF應用程序,我想有一個文本框,只能有數字條目(包括點和減號)。
我知道如何在Windows窗體中執行此操作,但WPF事件與我完全不同。
我發現了一個類似的線程How do I get a TextBox to only accept numeric input in WPF?應該能夠回答你的問題......
只需添加一個處理程序e.handled的keydown事件和集=真心對你不想讓關鍵。樣本位於頁面上,處理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" />
具體示例如何實現TextBox的上述代碼(如果可以避免,則不希望爲整個窗口執行此操作) http://social.msdn.microsoft.com/forums/zh-cn/ US/wpf/thread/d2d816c2-898f-4b4e-9756-96b6c5eb44e7 – EtherDragon
您只是將事件附加到TextBox。事件語法對於任何類型的控件都是相同的。使用WPF有一個事件冒泡,這是非常有用的,你可能想要閱讀。 – Paparazzi
嗯,我似乎無法取勝 - 我進入了這個在完全相同的時間H.B.評論說這是一個重複的線程,但我得到一個downvote。這就是生活。 – EtherDragon