SORU
8 AĞUSTOS 2008, Cuma


Sayısal Veri Girişi WPF

Nasıl WPF uygulamalarında sayısal değerlerin girişi yapacaksın?

NumericUpDown bir kontrol olmadan, bir TextBox kullanarak ve aşağıdaki kod ile PreviewKeyDown olayını hallediyorum, ama oldukça çirkin.

Herkes daha zarif bir şekilde üçüncü taraf bir denetim olmaksızın kullanıcıdan sayısal veri almak için buldu?

private void NumericEditPreviewKeyDown(object sender, KeyEventArgs e)
{
    bool isNumPadNumeric = (e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9) || e.Key == Key.Decimal;
    bool isNumeric = (e.Key >= Key.D0 && e.Key <= Key.D9) || e.Key == Key.OemPeriod;

    if ((isNumeric || isNumPadNumeric) && Keyboard.Modifiers != ModifierKeys.None)
    {
        e.Handled = true;
        return;
    }

    bool isControl = ((Keyboard.Modifiers != ModifierKeys.None && Keyboard.Modifiers != ModifierKeys.Shift)
        || e.Key == Key.Back || e.Key == Key.Delete || e.Key == Key.Insert
        || e.Key == Key.Down || e.Key == Key.Left || e.Key == Key.Right || e.Key == Key.Up
        || e.Key == Key.Tab
        || e.Key == Key.PageDown || e.Key == Key.PageUp
        || e.Key == Key.Enter || e.Key == Key.Return || e.Key == Key.Escape
        || e.Key == Key.Home || e.Key == Key.End);

    e.Handled = !isControl && !isNumeric && !isNumPadNumeric;
}

CEVAP
11 AĞUSTOS 2008, PAZARTESİ


Hakkında:

protected override void OnPreviewTextInput(System.Windows.Input.TextCompositionEventArgs e)
{
    e.Handled = !AreAllValidNumericChars(e.Text);
    base.OnPreviewTextInput(e);
}


private bool AreAllValidNumericChars(string str)
{
    foreach(char c in str)
    {
        if(!Char.IsNumber(c)) return false;
    }

    return true;
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:
Wpf

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Max Lee

    Max Lee

    18 AĞUSTOS 2006
  • spederson7

    spederson7

    17 Temmuz 2006
  • taliajoy18

    taliajoy18

    12 Temmuz 2011