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

  • Andrea Lewis

    Andrea Lewis

    14 Mart 2013
  • Madeon

    Madeon

    31 Ocak 2010
  • Sam Kear

    Sam Kear

    14 Temmuz 2007