2015-11-21 61 views
-2

焦點丟失後,可以自動從文本框中刪除aphabetical leters,並且只允許數值保留點和逗號?如果是,請出示例如自動從文本框中刪除字母順序? C#

+1

這是wpf還是winforms?標籤相矛盾。無論哪種方式,您都可以使用focuslost事件。然後將文本框設置爲:'test.Text = Regex.Replace(test.Text,「[^ 0-9。]」,「」);' – William

+0

我正在使用wpf,但我想爲winforms也可以提供幫助 – Tinaira

+0

你可以看到LostFocus事件 – aguetat

回答

1

[WPF]

像這樣的東西應該工作:

胡克在XAML事件:

<TextBlock x:Name="test" IsKeyboardFocusedChanged="test_IsKeyboardFocusedChanged"></TextBlock> 

或代碼...

TextBox test = new TextBox(); 
test.IsKeyboardFocusedChanged += test_IsKeyboardFocusedChanged; 

然後在事件..

void test_IsKeyboardFocusedChanged(object sender, DependencyPropertyChangedEventArgs e) 
{ 
    var test = sender as TextBox; 
    test.Text = Regex.Replace(test.Text, "[^0-9.,]", ""); 
} 

正則表達式將用空的空字符串替換非數字字符。

+0

它可以用十進制數字(貨幣)格式嗎? – Tinaira

+1

是的,看到這個網站:http://regexr.com/3aqdu。只需用Regex替換Regex.Replace中的第二個參數即可。鏈接上的一個是美國貨幣 – William

+0

我寫了這段代碼來格式化貨幣 txbPrice.Text = string.Format(System.Globalization.CultureInfo.GetCultureInfo(「de-DE」), 「{0:#, ## 0.00}「,decimal.Parse(txbPrice.Text)); ...哪個部分應該放在第二個參數中? – Tinaira

2

如果您正在尋找一個Windows窗體控制,限制數據輸入數值沒有編寫代碼,那麼看來你正在尋找NumericUpdown控制。

數字顯示可以通過設置DecimalPlaces,HexadecimalThousandsSeparator屬性進行格式化。