Convert bzw. NumericTextbox
-
Hi,
Also, ich will eine Textbox erstellen wo man nur Zahlen eintragen kann, damit man als Höhen angabe z.B. nicht "B" eingibt...falls das mit VC# nicht möglich ist, will ich wissen, wie man aus einer norameln textbox ziffern ausliest und sie in "double"
speichert ? ALso erst in einen String kopieren, und dann den String umwandlend un in "double" konvertieren ?Wie geht das alles ?mfg
FoX
-
Wenn Du .NET 2.0 nutzt, dann MaskedTextBox.
Umwandeln: z.B. Conver.ToDouble()
-
ähhmm,...
kann man nich iwie einen filter einbauen, das die Textbox nichts anderes außer Zahlen annimmt ? .. weil die maskted textbox is nich so gut, weil man immer diese MASKCHARS hat .. und wenn man dem user dann noch kommerzahlen eingeben lassen will, wird schwer...^^also gibt es nicht einen filter der sozusagen für diese Textbox alles außer zahlen sperrtt ?
mfg fox
-
-
evtl wär auch noch numeric up down was für dich. bin mir aber nicht mehr sicher ob man auch fließkommazahlen verwenden darf.
-
Versuch mal diese Klasse...
Hoffe geholfen zu haben !public class NumberBox : System.Windows.Forms.TextBox { public enum Type { Integer, Double } private Type _type = Type.Integer; private bool _autoSelect = false; [System.ComponentModel.Category("Verhalten")] public Type InputType { get { return this._type; } set { this._type = value; } } [System.ComponentModel.Category("Verhalten")] public bool AutoSelect { get { return this._autoSelect; } set { this._autoSelect = value; } } private bool IsInputValid(string text) { bool result = true; try { switch (this.InputType) { case Type.Integer: System.Convert.ToInt64(text); break; case Type.Double: System.Convert.ToDouble(text); break; } } catch (System.Exception ex) { System.Console.WriteLine(ex.Message); result = false; } return result; } protected override void OnKeyPress(System.Windows.Forms.KeyPressEventArgs e) { if (System.Char.IsControl(e.KeyChar) == false) { string text = base.Text.Substring(0, base.SelectionStart) + e.KeyChar.ToString() + base.Text.Substring(base.SelectionStart + base.SelectionLength); e.Handled = !this.IsInputValid(text); } base.OnKeyPress(e); } protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData) { bool result = false; if (keyData == (System.Windows.Forms.Keys)System.Windows.Forms.Shortcut.CtrlV || keyData == (System.Windows.Forms.Keys)System.Windows.Forms.Shortcut.ShiftIns) { System.Windows.Forms.IDataObject data = System.Windows.Forms.Clipboard.GetDataObject(); string text = base.Text.Substring(0,base.SelectionStart) + System.Convert.ToString(data.GetData(System.Windows.Forms.DataFormats.Text)+base.Text.Substring(base.SelectionStart+base.SelectionLength)); result = !this.IsInputValid(text); } if (result == false) { result = base.ProcessCmdKey(ref msg, keyData); } return result; } protected override void OnEnter(EventArgs e) { if (this.AutoSelect) { this.SelectAll(); } } }
-
Ernsti schrieb:
Versuch mal diese Klasse...
Versuch mal selbst und nutze dabei Copy & Paste.