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

  • PlayStation

    PlayStation

    16 Aralık 2005
  • WoodysGamertag

    WoodysGamert

    17 Aralık 2009
  • xSammyJoe1

    xSammyJoe1

    19 Temmuz 2011