How to create a numeric textbox in Silverlight?

前端 未结 11 967
礼貌的吻别
礼貌的吻别 2020-12-16 00:37

As the title says really. I\'ve had a look at inheriting from TextBox, but the only sensible override was \"OnKeyDown\", but that just gives me a key from the Key enum (with

11条回答
  •  南笙
    南笙 (楼主)
    2020-12-16 01:14

    Why is everyone not doing the hard work of just handling them all?

    Here (this is perfection):

    
    
    private void TextBox_KeyDown(object sender, KeyEventArgs e)
    {
        var _Letter = string.Empty;
        switch (e.Key)
        {
            case Key.A: _Letter = "A"; break;
            case Key.Add: _Letter = "+"; break;
            case Key.Alt: break;
            case Key.B: _Letter = "B"; break;
            case Key.Back: break;
            case Key.C: _Letter = "C"; break;
            case Key.CapsLock: break;
            case Key.Ctrl: break;
            case Key.D: _Letter = "D"; break;
            case Key.D0: _Letter = "0"; break;
            case Key.D1: _Letter = "1"; break;
            case Key.D2: _Letter = "2"; break;
            case Key.D3: _Letter = "3"; break;
            case Key.D4: _Letter = "4"; break;
            case Key.D5: _Letter = "5"; break;
            case Key.D6: _Letter = "6"; break;
            case Key.D7: _Letter = "7"; break;
            case Key.D8: _Letter = "8"; break;
            case Key.D9: _Letter = "9"; break;
            case Key.Decimal: _Letter = "."; break;
            case Key.Delete: break;
            case Key.Divide: _Letter = "/"; break;
            case Key.Down: break;
            case Key.E: _Letter = "E"; break;
            case Key.End: break;
            case Key.Enter: break;
            case Key.Escape: break;
            case Key.F: _Letter = "F"; break;
            case Key.F1: break;
            case Key.F10: break;
            case Key.F11: break;
            case Key.F12: break;
            case Key.F2: break;
            case Key.F3: break;
            case Key.F4: break;
            case Key.F5: break;
            case Key.F6: break;
            case Key.F7: break;
            case Key.F8: break;
            case Key.F9: break;
            case Key.G: _Letter = "G"; break;
            case Key.H: _Letter = "H"; break;
            case Key.Home: break;
            case Key.I: _Letter = "I"; break;
            case Key.Insert: break;
            case Key.J: _Letter = "J"; break;
            case Key.K: _Letter = "K"; break;
            case Key.L: _Letter = "L"; break;
            case Key.Left: break;
            case Key.M: _Letter = "M"; break;
            case Key.Multiply: _Letter = "*"; break;
            case Key.N: _Letter = "N"; break;
            case Key.None: break;
            case Key.NumPad0: _Letter = "0"; break;
            case Key.NumPad1: _Letter = "1"; break;
            case Key.NumPad2: _Letter = "2"; break;
            case Key.NumPad3: _Letter = "3"; break;
            case Key.NumPad4: _Letter = "4"; break;
            case Key.NumPad5: _Letter = "5"; break;
            case Key.NumPad6: _Letter = "6"; break;
            case Key.NumPad7: _Letter = "7"; break;
            case Key.NumPad8: _Letter = "8"; break;
            case Key.NumPad9: _Letter = "9"; break;
            case Key.O: _Letter = "O"; break;
            case Key.P: _Letter = "P"; break;
            case Key.PageDown: break;
            case Key.PageUp: break;
            case Key.Q: _Letter = "Q"; break;
            case Key.R: _Letter = "R"; break;
            case Key.Right: break;
            case Key.S: _Letter = "S"; break;
            case Key.Shift: break;
            case Key.Space: _Letter = " "; break;
            case Key.Subtract: _Letter = "-"; break;
            case Key.T: _Letter = "T"; break;
            case Key.Tab: break;
            case Key.U: _Letter = "U"; break;
            case Key.Unknown: break;
            case Key.Up: break;
            case Key.V: _Letter = "V"; break;
            case Key.W: _Letter = "W"; break;
            case Key.X: _Letter = "X"; break;
            case Key.Y: _Letter = "Y"; break;
            case Key.Z: _Letter = "Z"; break;
            default: break;
        }
        var _Text = (sender as TextBox).Text + _Letter;
        double _Double;
        e.Handled = !double.TryParse(_Text, out _Double);
    }
    

    }

提交回复
热议问题