c#, Tastendruck auf Button umleiten

Hi,
Also, ich fange gerade an mich in C# einzuarbeiten, und habe zwei kleine Probleme:

1. Ich habe ein Textfeld erstellt und möchte nun, dass, wenn man das Textfeld markiert und "Enter" drückt, sich dann der Inhalt von einem bestimmten Button ausführt.
Das ganze muss man scheinbar im "Designquelltext" machen...
unter Textbox1 stehen also Definitionen, blabla, und dann müsste sowas ähnliches wie das hier kommen:
"
this.textBox1.Enter + = new System.Eventhandler(button1_Click);"

nur so führt er die Syntax von Button1 schon immer aus, wenn das Feld markiert wird...ich will aber einen simplen Enterdruck haben...



2. Gibt es einen Befehl, derüberprüft, ob in einem Textfeld nur Ziffern stehen, oder kann man das Feld auch so definieren, dass man nur Zahlen/Ziffern eingeben kann?

Wäre echt nett, wenn mir jemand helfen könnte...
 
zu 1.
*.Enter ist nicht der eventhandler für die enter taste sondern für den fokus des steuerelements.
du musst nen KeyDown (oder KeyPress) eventhandler für die textbox erstellen und dann kannst du darin folgendermaßen überprüfen ob enter gedrückt wurde:

if(e.KeyCode == Keys.Enter)
// funktion aufrufen die die du auch beim button aufrufst

zu 2.
http://www.thecodeproject.com/cs/miscctrl/ValidatingTextBoxControls.asp
 
Zu 1.
Vielen Dank, es funktioniert jetzt!

Zu 2.
Irgendwie versteh ich überhaupt nicht, wie das funktionieren soll...ich glaub, ich bin zu doof dazu...wenn ich irgendwann mal besser bin, versuch's ich das zu verstehen...
 
Zu zweiterem: Du kannst doch einfach per try/catch den Fehler abfangen. Ist imho die einfachste Methode (wobei ich die Controls nicht so gut kenne, kann sein, dass es da eine spezielle Funktion / Property für gibt).
 
C#, Buttons mit key.events versehen

hallo leute,

wie bereits in den ersten beiträge mitgeteilt, versuche ich mir c# beizubringen. ein bisschen funktioniert das auch.

nur jetzt habe ich ein problem. ich möchte auf bestehende buttons, wo schon clicks-event funktionieren, jetzt noch key-events hinzufügen. habe mich schon durch foren u büchern gekämpft.

hier der zurzeit bestehende code:

#region Speichern

// Hier wird gespeichert

private void button1_Click(object sender, EventArgs e)
{
btnSave();
}
#endregion

#region Textbox löschen

// Textbox wird leer gemacht

private void button2_Click(object sender, EventArgs e)
{
textBoxInboxes.Text = "";
}
#endregion

#region Abbrechen

private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
#endregion
 
@ daisyking

1. wieso benutzt du denn immer #region? hast du dafür einen bestimmten grund? soweit ich weiß ist das nicht falsch, aber ich bin auch noch am c# lernen und vielleicht lern ich da ja auch gleich noch was ;)

ansonsten zu deinem problem:

ich nehme mal an, du hast die buttons irgendwo mit einem designer erstellt. normalerweise hast du da die propertys einstellung, wo du z.b. größe, beschriftung... einstellen kannst und auch die events. bei visual studio hast du oben in der propertybox einen button mit einem blitz. darunter ist das versteckt. solltest du eine andere ide verwenden musst du zur not selber gucken.

und wenn du das per hand lösen willst (ist spätestens dann nötig, wenn du mal buttons dynamisch erstellst) dann kannst du z.b. in die form.designer.cs gehen (also die von dem entsprechenden form natürlich, und dir mal angucken, wie es dort gemacht ist.

du wirst auf jeden fall sowas hier finden:

Code:
private System.Windows.Forms.Button button1;

das heißt erstmal nur, dass ein buttonobjekt erstellt wird. naja, erstellt ist eigentlich falsch aber mir fehlt grad das passende wort.

dann findest du noch:

Code:
this.button1 = new System.Windows.Forms.Button();

damit wird dieses objekt von ebend aus genau diesem formular angesprochen, und eine konkrete instanz eines buttons zugewiesen
jetzt hast du deinen button

nun musst du den noch einstellen (bei mir z.b. so):

Code:
// 
            // button1
            // 
            this.button1.Location = new System.Drawing.Point(544, 69);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(75, 23);
            this.button1.TabIndex = 19;
            this.button1.Text = "button1";
            this.button1.UseVisualStyleBackColor = true;
            this.button1.Click += new System.EventHandler(this.button1_Click);

so, wie du siehst wurde hier ein eventhandler hinzugefügt, der auf ein klick reagiert.

wenn ich nun in meiner form.cs nachsehe habe ich folgende funktion:

Code:
private void button1_Click(object sender, EventArgs e)
        {
  
        }

damit sollte nun klar sein was du machen musst:

den eventhandler zum button hinzufügen und die funktion dazu schreiben.
das könnte nun so aussehen:

Code:
this.button1.KeyDown += new System.EventHandler(this.button1_KeyDown);
this.button1.KeyPress += new System.EventHandler(this.button1_KeyPress);
this.button1.KeyUp += new System.EventHandler(this.button1_KeyUp);

ich glaube das waren alle.

wenn du dann noch die funktionen machst sollte es gehen

Code:
private void button1_KeyDown(object sender, EventArgs e)
        {
  
        }

private void button1_KeyPress(object sender, EventArgs e)
        {
  
        }

private void button1_KeyUp(object sender, EventArgs e)
        {
  
        }

so, das war es schon.

da du normalerweise nicht per hand im designer rumhantieren sollst, da dir das meist wieder überschrieben wird, machst du das einfach an einer geeigneten stelle in der form.cs (z.b. beim form_load oder so)

ich denke mal, das sollte dein problem beheben
 
danke für die hilfe u info.

werde es sofort angehen. u wenn alles hinhaut, ist ein meilenstein vollbracht.
falls noch fragen sind werd ich mich melden.

nochmals danke.

gruss daisyking ;)

ps: das #region mache ich nur damit ich so ne kleine übersicht habe, weil ich diese sonst verliere. dies dient eigentlich nur dazu da, um abgearbeitete sachen zu schließen
--------------------------------------------------------
morgen,

leider funktioniert es immer noch noch.
mal ne frage: wie sollten den die funktionen in den einzelnen methoden genau aussehen?

hab ehrlich gesagt kein plan mehr. denke mal wieder zu kopmliziert

meinst du das so inetwa, mit der funktion?

private void button1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Enter)
{
MessageBox.Show("Buh");

}
}
 
Zurück
Oben