По моему смещенному мнению C является лучшей точкой для запуска. Язык является маленьким, это - функции высокого уровня, повсеместны, и низкоуровневые функции позволяют Вам изучить машину.
я нашел Краткая информация C Плюс, 5-й Выпуск очень полезный как начинающий программист почти ни с каким опытом программирования. Это не принимает предшествующего опыта программирования, забава читать и покрывает C подробно (включая последний стандарт C99).
protected override void OnPreviewTextInput(TextCompositionEventArgs e)
{
char c = Convert.ToChar(e.Text);
if (Char.IsNumber(c))
e.Handled = false;
else
e.Handled = true;
base.OnPreviewTextInput(e);
}
Вы можете использовать правило проверки ... http://www.codeproject.com/KB/WPF/wpfvalidation.aspx
Или создать собственное текстовое поле для маскировки http://rubenhak.com/?p=8
Вы можете связать свое текстовое поле со свойством зависимости, а внутри метода проверки свойства зависимости вы можете проверить, возвращает ли int.tryparse значение true, тогда отлично, в противном случае вы можете перейти к значению по умолчанию или сбросить значение.
Или вы можете использовать WPF ValidationRules, чтобы узнать, когда значение изменяется. После изменения вы можете применить логику для проверки.
Или вы можете использовать IDataError Info для проверки.
В WPF значения кода ключа отличаются от нормальных значений winforms e.keychar,
В событии PreviewKeyDown текстового поля добавьте этот код:
if ((e.key < 34) | (e.key > 43)) {
if ((e.key < 74) | (e.key > 83)) {
if ((e.key == 2)) {
return;
}
e.handled = true;
}
}
Это позволит Пользователь может вводить только числа в разделе Numpad0 - Numpad9 и D0 - D9, а также ключ. Обратно
Надеюсь, это поможет, ура!
//Call this code on KeyDown Event
if((e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9) || (e.Key == Key.Back))
{ e.Handled = false; }
else if((e.Key >= Key.D0 && e.Key <= Key.D9))
{ e.Handled = false; }
else
{ e.Handled = true; }
расширенная версия Хасиба Уз Замана
private void txtExpecedProfit_PreviewTextInput_1(object sender, TextCompositionEventArgs e)
{
CheckIsNumeric((TextBox)sender,e);
}
private void CheckIsNumeric(TextBox sender,TextCompositionEventArgs e)
{
decimal result;
bool dot = sender.Text.IndexOf(".") < 0 && e.Text.Equals(".") && sender.Text.Length>0;
if (!(Decimal.TryParse(e.Text, out result ) || dot ) )
{
e.Handled = true;
}
}
. Она проверит наличие дубликатов (десятичный знак) и не разрешит только одно. (Десятичный знак)
private void shomaretextBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
// xaml.cs code
if (!char.IsDigit(e.Text, e.Text.Length - 1))
e.Handled = true;
}
В xaml
<TextBox x:Name="shomaretextBox"
HorizontalAlignment="Left"
Height="28"
Margin="125,10,0,0"
TextWrapping="Wrap"
VerticalAlignment="Top"
Width="151"
Grid.Column="1"
TextCompositionManager.PreviewTextInput="shomaretextBox_PreviewTextInput" />
Я считаю, что вы ищете, это PreviewTextInput
событие.