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

  • merumputdotcom

    merumputdotc

    24 ŞUBAT 2012
  • NightShader1

    NightShader1

    25 Temmuz 2006
  • tsweeney79

    tsweeney79

    21 Ocak 2008