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

  • Air_Fooj

    Air_Fooj

    24 NİSAN 2009
  • Amena

    Amena

    15 Kasım 2006
  • Tome Rodrigo

    Tome Rodrigo

    9 Temmuz 2006