C# Aktion bei Mausklick in eine Textbox

Mygeeto

Lieutenant
Registriert
Nov. 2009
Beiträge
728
Hallo,

es funktioniert nicht so, wie ich will. Kann nicht verstehen, wo der Fehler liegt:

Beschreibung meines Ziels:
Bin einen Taschenrechner am Programmieren. Ich kann jetzt Ergebnisse in einem Speicher mit 3 Speicherplätzen speichern. Dadurch möchte ich die Möglichkeit haben mit den Ergebnissen weiterzurechnen, indem ich diese mit einem Button Uebernehmen in eine jeweils zuletzt angeklickte meiner zwei Eingabe-TextBoxen übernehmen kann.

So bin ich vorgegangen:
Ich möchte, wenn ich mit der MAUS in meine TextBox1 klicke, dass eine globale Variable Textfeld1=1 gesetzt wird und eine Variable Textfeld2=0 gesetzt wird. Umgekehrt wenn ich in TextBox 2 klicke wird Textfeld2=1 und Textfeld1=0 gesetzt.
Wenn ich dann auf einen Button Uebernehmen1(für meine gespeicherte erste Zahl) klicke, wird mit einer Fallunterscheidung geprüft, welcher Wert auf 1 ist und dann soll eine gespeicherte Zahl in die jeweilige zuletzt angeklickte TextBox.Text geschrieben werden.

Leider klappt es nicht. Nur, wenn ich in der jeweiligen TextBox mit der Tastatur zahlen eingebe oder die letzte Eingabe lösche, dann wird die gespeicherte Zahl in die Textbox eingetragen. (Scheinbar wird erst bei einer Aktion mit der Tastatur innerhalb der jeweiligen TextBox meine beiden Variablen Textfeld1 und Textfeld2 aktualisiert.)

Eigentlich dreht sich m.E. also die Frage jetzt nur darum: Wie kann ich machen, dass bei einem Klick mit der Maustaste in eine Textbox eine Aktion durchgeführt wird?


mfG
Mygeeto
 

Anhänge

  • Taschenrechenr.PNG
    Taschenrechenr.PNG
    40,1 KB · Aufrufe: 325
Ich kann dir die Antwort nicht auf die schnelle geben, da ich vermute, dass das Event "MouseLeftClick" auch durch Texteingaben aufgerufen wird. Vermutlich solltest du besser das Event "MouseClick" nutzen. Aber du solltest dich auch fragen, was z.B. passiert, wenn jemand die Textboxen per Tab wechselt. Dann funktioniert dein Rechner nicht. Daher solltest du ein Event nutzen wie z.B. "GotFocus".
 
Hallo,

probier mal der Text-Property den Wert zuweisen, nicht der TextBox selbst, also Textbox1.Text = "1" statt Textbox1 = 1
 
Danke erstmal. @Radagast: Der Textbox1.Text soll ja nicht eine 1 oder 0 zugewiesen werden sondern der Inhalt von einem label4.Text (da speicher ich quasi mein Ergebnis drinne, wenn ich auf einen Button Speichern1 klicke). Diese beiden Variablen Textfeld1 bzw. Textfeld2 sind ja bloß Hilfsvariablen, die ich benutze, um quasi einen Status abzufragen(welche Box als letzte angeklickt wurde,damit dort der Inhalt von label4.Text eingefügt wird).



Also ich hab jetzt das Event GotFocus benutzt. Es ist immer noch dasselbe Problem wie vorher. Muss ich vlt. noch irgendwo das Event deklarieren oder so? Ich werde nicht ganz schlau, was auf der Hilfeseite steht bei Syntax: https://msdn.microsoft.com/de-de/library/system.windows.forms.control.gotfocus(v=vs.110).aspx

Habe mein Programm mit ein paar Kommentaren gezipt angefügt. Vlt. mag das ja einer sich kurz angucken.... :baby_alt:

mfG
Mygeeto
 

Anhänge

Was spricht gegen das "Click" Event?
Alternativ ginge noch das "Enter" Event, wenn es nicht nur bei der Maus greifen soll.

Wenn du Events "deklarieren" willst, musst du das im Form1.Designer.cs hinzufügen*. Aber wenn man es durch Doppelklick hier erstellt, wird automatisch der ganze benötigte Code generiert.
event.png

*Beispiel dein Berechnen-Button
Code:
            // 
            // Berechnen
            // 
            this.Berechnen.Location = new System.Drawing.Point(625, 67);
            this.Berechnen.Name = "Berechnen";
            this.Berechnen.Size = new System.Drawing.Size(107, 49);
            this.Berechnen.TabIndex = 0;
            this.Berechnen.Text = "Berechnen";
            this.Berechnen.UseVisualStyleBackColor = true;
            this.Berechnen.Click += new System.EventHandler(this.Berechnen_Click);
 
Zuletzt bearbeitet:
Theobald93 schrieb:
Was spricht gegen das "Click" Event?
Alternativ ginge noch das "Enter" Event, wenn es nicht nur bei der Maus greifen soll.

Wenn du Events "aktivieren" willst, musst du das im Form1.Designer.cs hinzufügen. Aber wenn man es durch Doppelklick hier erstellt, ist automatisch alles richtig.
Anhang anzeigen 555012

Okay, wenn ich Doppelklicke auf eine Textbox, dann öffnet er das Form1.cs und fügt da hinzu:
private void Textbox1_TextChanged .....usw.... bzw. private void Textbox1_TextChanged .....usw....
aber nichts mit Cklick oder so.
Ich hab das daraufhin geändert und im Form1.Designer.cs dasselbe geändert. Sonst mus ich nichts machen?
 
Hab nie gesagt du sollst auf die TextBox doppelklicken, da kommt das Standardevent TextChanged.

Klick im Designer die TextBox an, wechsle von den Eigenschaften zu den Ereignissen (der gelbe Blitz) und doppelklicke hier auf das Event was du hinzufügen möchtest.
ereignisse.png
 
Theobald93 schrieb:
Hab nie gesagt du sollst auf die TextBox doppelklicken, da kommt das Standardevent TextChanged.

Klick im Designer die TextBox an, wechsle von den Eigenschaften zu den Ereignissen (der gelbe Blitz) und doppelklicke hier auf das Event was du hinzufügen möchtest.
Anhang anzeigen 555014

Jo danke. :cool_alt:
Das ist es. klappt jetzt. Dann hat da wohl was an Code gefehlt. Oder aber irgendwie nicht übernommen worde. Denn eigentlich hab ich die jeweilige Zeile unter //Textbox1 bzw //Textbox2 in dem Form1.Designer.cs geändert.
 
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben