19. oktober 2007 - 14:32
Der er
14 kommentarer og 2 løsninger
Kun tal i textbox
Hej eksperter. Jeg vil lave en textbox hvor man kun kan indtaste tal i. Jeg har leget lidt med det selv, men vil gerne fange det allerede under indtastningen. Så vidt jeg kan finde ud af skal jeg fange de i: private void textBox_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) Men hvor skal jeg ligge denne i min kode så den bliver kørt når man indtaster i textboxen? Eller hvis i har en bedre metode må i også meget gerne komme med inputs. Mvh Martin
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
19. oktober 2007 - 14:38
#1
OnKeyDown ... på din textboks ... Du kan også bruge MaskedTextbox som er med i .NET 2.0 // ouT
19. oktober 2007 - 14:44
#2
Ja, men hvordan laver jeg en on keydown på min textbox. (Jeg kender koden) men hvor j eg skal indsætte koden henne. Kan sipelthen ikke få det til at virke! Mvh
19. oktober 2007 - 14:50
#3
Det er jo en event til din tekstbox ... Button1.KeyDown += Hvis du bruger VS.NET kan ligger den ved siden af properties ... (sådan et gult lyn) // ouT
19. oktober 2007 - 14:52
#4
Det jeg mener er: Hvis jeg har denne kode på min form: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsApplication1 { public partial class Form3 : Form { public Form3() { InitializeComponent(); } } } I den er der indsat en textbox, textBox1 Hvordan får jeg så følgende til at virke på textboxen? private bool nonNumberEntered = false; private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { nonNumberEntered = false; if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9) { if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9) { if(e.KeyCode != Keys.Back) { nonNumberEntered = true; } } } } private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { if (nonNumberEntered == true) { e.Handled = true; } }
19. oktober 2007 - 15:01
#5
Jeg tænker det måske skal ind under dette? namespace WindowsApplication1 { partial class Form3 { /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// Clean up any resources being used. /// </summary> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.textBox1 = new System.Windows.Forms.TextBox(); this.SuspendLayout(); // // textBox1 // this.textBox1.Location = new System.Drawing.Point(106, 122); this.textBox1.Name = "textBox1"; this.textBox1.Size = new System.Drawing.Size(100, 20); this.textBox1.TabIndex = 0; // // Form3 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(292, 266); this.Controls.Add(this.textBox1); this.Name = "Form3"; this.Text = "Form3"; this.ResumeLayout(false); this.PerformLayout(); } #endregion private System.Windows.Forms.TextBox textBox1; } }
19. oktober 2007 - 15:03
#6
Jeg har skrevet denne: this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(textBox1_KeyDown); Men man kan stadig indtaste bogstavet i textboxen??? Mvh
19. oktober 2007 - 15:05
#7
this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBox1_KeyPress); Som ligger i Form1.Designer.cs .... Hvis du i designer trykke på din textbox ... trykker på properties ... og så over på event ... og så vælge de 2 method som skal være assigned KeyDown og KeyPress // ouT
19. oktober 2007 - 15:06
#8
Det er fordi din textboks ikke kender til de 2 Methods du har oprettet ... I designeren kan du tildele dem til din Button events ... // ouT
19. oktober 2007 - 15:11
#9
SÅDAN :D Så virker det! Smid et svar!!! 1000 TAK FOR HJÆLPEN!
19. oktober 2007 - 15:13
#10
Så ser koden(erne) således ud: Form3.Designer.cs: namespace WindowsApplication1 { partial class Form3 { /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// Clean up any resources being used. /// </summary> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.textBox1 = new System.Windows.Forms.TextBox(); this.SuspendLayout(); // // textBox1 // this.textBox1.Location = new System.Drawing.Point(106, 122); this.textBox1.Name = "textBox1"; this.textBox1.Size = new System.Drawing.Size(100, 20); this.textBox1.TabIndex = 0; this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBox1_KeyPress); // // Form3 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(292, 266); this.Controls.Add(this.textBox1); this.Name = "Form3"; this.Text = "Form3"; this.ResumeLayout(false); this.PerformLayout(); } #endregion private System.Windows.Forms.TextBox textBox1; } } Form3.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsApplication1 { public partial class Form3 : Form { private bool nonNumberEntered = false; public Form3() { InitializeComponent(); } private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { nonNumberEntered = false; if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9) { if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9) { if (e.KeyCode != Keys.Back) { nonNumberEntered = true; } } } } private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { if (nonNumberEntered == true) { e.Handled = true; } } } }
19. oktober 2007 - 15:14
#11
så lidt ... svar // ouT
19. oktober 2007 - 15:17
#12
Hej martinsorensen, Du kan også gøre det så simpelt her: public partial class Form1 : Form { public Form1() { InitializeComponent(); this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBox1_KeyPress); } private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { string strAllowedChars = "1234567890"; if (strAllowedChars.IndexOf(e.KeyChar) < 0) e.Handled = true; } } Så kan du specificere præcis hvad der må indtastes i strAllowedChars. :) Mvh. - Snap
19. oktober 2007 - 15:19
#13
Helt korrekt. :D Smid et svar så kan i dele!
19. oktober 2007 - 15:19
#14
Havde samme ønske som dig på et tidspunkt.
Jeg valgte at bruge denne 3. parts komponent i stedet for. Det er meget nemmere... Og det virker uden ekstra kodning.
www.skare.com/tekstboxtest.zip /Lasse
19. oktober 2007 - 15:22
#15
hov :( Skulle have været crazysnap's point!
19. oktober 2007 - 15:25
#16
Det er helt i orden! :) Dit egentlige spørgsmål blev jo også besvaret af buzzzz. Men glad for du har fået det til at virke. Mvh. - Snap
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.