using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; namespace System.Windows.Forms { public partial class MultiNumericBox : NumericBoxBase { public MultiNumericBox() : base() { InitializeComponent(); this.Value = (0).ToString(); this.ReadOnly = false; InputType = NumericInputTypes.Default; } //public override string Text //{ // get { return base.Text; } // set { base.Text = value; } //} private NumericInputTypes _InputType; public NumericInputTypes InputType { get { return _InputType; } set { _InputType = value; } } protected override void CreateValidKeys(List ValidKeys) { base.CreateStandardKeys(ValidKeys); switch (InputType) { case NumericInputTypes.Binary: ValidKeys.Add(Keys.D0); ValidKeys.Add(Keys.NumPad0); ValidKeys.Add(Keys.D1); ValidKeys.Add(Keys.NumPad1); break; case NumericInputTypes.Octal: ValidKeys.AddRange(Enum.GetValues(typeof(Keys)).Cast().Where(x => x >= Keys.D0 && x <= Keys.D7)); ValidKeys.AddRange(Enum.GetValues(typeof(Keys)).Cast().Where(x => x >= Keys.NumPad0 && x <= Keys.NumPad7)); break; case NumericInputTypes.Hex: case NumericInputTypes.IEEE754HexFloat: ValidKeys.AddRange(Enum.GetValues(typeof(Keys)).Cast().Where(x => x >= Keys.D0 && x <= Keys.D9)); ValidKeys.AddRange(Enum.GetValues(typeof(Keys)).Cast().Where(x => x >= Keys.NumPad0 && x <= Keys.NumPad9)); ValidKeys.Add(Keys.A); ValidKeys.Add(Keys.B); ValidKeys.Add(Keys.C); ValidKeys.Add(Keys.D); ValidKeys.Add(Keys.E); ValidKeys.Add(Keys.F); break; case NumericInputTypes.Decimal: ValidKeys.Add(Keys.Decimal); ValidKeys.Add(Keys.OemPeriod); ValidKeys.AddRange(Enum.GetValues(typeof(Keys)).Cast().Where(x => x >= Keys.D0 && x <= Keys.D9)); ValidKeys.AddRange(Enum.GetValues(typeof(Keys)).Cast().Where(x => x >= Keys.NumPad0 && x <= Keys.NumPad9)); break; } } } public enum NumericInputTypes { Decimal, Binary, Octal, Hex, IEEE754HexFloat, Default = Decimal, } }