Laden...

Key.Enter entfernt Inhalt von Textbox

Erstellt von Paddy93 vor 10 Jahren Letzter Beitrag vor 10 Jahren 2.846 Views
P
Paddy93 Themenstarter:in
62 Beiträge seit 2011
vor 10 Jahren
Key.Enter entfernt Inhalt von Textbox

Hallo Leute,
ich habe folgendes Problem:
Zuerst einmal entwickel ich gerade ein Programm das einen Inhalt in meine Combobox aufnimmt. Daraus wird dann geprüft, Wenn Text 1 eintritt, kann der Benutzer Textboxen mit Werten füllen. Bei Drücken der Entertaste wird dann eine Addition durchgeführt. Das Drücken der Entertaste ist aber nur für eine Textbox konfiguriert. Wenn dann Enter gedrückt wird verschwindet der Inhalt der Textbox. Bei erneuter Eingabe der Enter-Taste ist der Inhalt wieder da. Die Addition funktioniert jedoch auch , wenn der Text nicht angezeigt wird.
Zusammengefasst funktioniert meine kleine Applikation, jedoch wird bei bestätigen der Enter-Taste der Inhalt für die Tb vom Key-Press Event "gelöscht" bei erneutem drücken der Enter-Taste aber wieder angezeigt.

Bitte um Hilfe 😃 unten angeführt mein Quellcode für das KEY-Down Event:


 if (e.KeyCode == Keys.Enter)
            {
                if (comboBox1.Text == "PA")
                {
                    double länge = 0.0;
                    double temp = 0.0;
                    double index_PA = 0.11;
                    double errechnetesMaß = 0.0;
                    double maßstabsfaktor = 0.0;

                    temp = Convert.ToDouble(this.tbTemperatur.Text);
                    länge = Convert.ToDouble(this.tbLänge.Text);
                   

                    errechnetesMaß = (temp - 20) * index_PA + länge;
                    maßstabsfaktor = errechnetesMaß / länge;

                    tbAusdehnungsfaktor.Text = Convert.ToString(index_PA);
                    tbErrechnetesMaß.Text = Convert.ToString(errechnetesMaß);
                    tbErgebnis.Text = Convert.ToString(maßstabsfaktor);
                    tbLänge.Text = Convert.ToString(länge);
                }
                else if (comboBox1.Text == "PE")
                {
                    double länge = 0.0;
                    double temp = 0.0;
                    double index_PA = 0.18;
                    double errechnetesMaß = 0.0;
                    double maßstabsfaktor = 0.0;

                    temp = Convert.ToDouble(this.tbTemperatur.Text);
                    länge = Convert.ToDouble(this.tbLänge.Text);


                    errechnetesMaß = (temp - 20) * index_PA + länge;
                    maßstabsfaktor = errechnetesMaß / länge;

                    tbAusdehnungsfaktor.Text = Convert.ToString(index_PA);
                    tbErrechnetesMaß.Text = Convert.ToString(errechnetesMaß);
                    tbErgebnis.Text = Convert.ToString(maßstabsfaktor);
                    tbLänge.Text = Convert.ToString(länge);
                }
                else if (comboBox1.Text == "POM/PET")
                {
                    double länge = 0.0;
                    double temp = 0.0;
                    double index_PA = 0.12;
                    double errechnetesMaß = 0.0;
                    double maßstabsfaktor = 0.0;

                    temp = Convert.ToDouble(this.tbTemperatur.Text);
                    länge = Convert.ToDouble(this.tbLänge.Text);


                    errechnetesMaß = (temp - 20) * index_PA + länge;
                    maßstabsfaktor = errechnetesMaß / länge;

                    tbAusdehnungsfaktor.Text = Convert.ToString(index_PA);
                    tbErrechnetesMaß.Text = Convert.ToString(errechnetesMaß);
                    tbErgebnis.Text = Convert.ToString(maßstabsfaktor);
                    tbLänge.Text = Convert.ToString(länge);
                }
5.658 Beiträge seit 2006
vor 10 Jahren

Hi Paddy93,

was ist eigentlich deine Frage? Du kannst doch mit dem Debugger herausfinden, was zu welchem Zeitpunkt in der Textbox steht. Ich verstehe daher nicht, wie man dir helfen könnte.

Christian

Weeks of programming can save you hours of planning

P
Paddy93 Themenstarter:in
62 Beiträge seit 2011
vor 10 Jahren

Über die Einzelschritt-Methode von VS bin ich das schon durchgegangen.
Leider ohne Erfolg.

Das Problem liegt darin das ich bei Programmstart die Textboxen mit Werten fülle und beim 1. Druck der Entertaste, der Inhalt der TextBox verschwindet, bei der ich das KEY-Down Event erstellt habe.
Drücke ich die Enter-Taste ein 2. mal ist der Inhalt wieder da. Jedoch möchte ich das so haben, dass der Inhalt beim 1. Druck nicht verschwindet. Und ich weiß nicht wo der Fehler ist.

T
156 Beiträge seit 2012
vor 10 Jahren

Hallo Paddy93,

was ist denn der Inhalt Deines KeyDown-Event?
Du scheinst dort die text-Eigenschaft ja anzufassen.

Viele Grüße,
telfa

P
Paddy93 Themenstarter:in
62 Beiträge seit 2011
vor 10 Jahren

Die oben gepostete IF-Anweisung ist der komplette Inhalt meines Key-Down Events.

T
156 Beiträge seit 2012
vor 10 Jahren

Hallo Paddy93,

sorry, das hatte ich jetzt nicht bedacht.
In dem Event behandelst Du scheinbar vier TextBoxen:

  • tbAusdehnungsfaktor.Text = Convert.ToString(index_PA);
  • tbErrechnetesMaß.Text = Convert.ToString(errechnetesMaß);
  • tbErgebnis.Text = Convert.ToString(maßstabsfaktor);
  • tbLänge.Text = Convert.ToString(länge);

Zu welcher TextBox ist das Event denn abonniert?
Deine Angaben erscheinen leider dürftig.

telfa

P
Paddy93 Themenstarter:in
62 Beiträge seit 2011
vor 10 Jahren

Kein Problem.Der Event Handler bezieht sich auf tbLänge.

C
258 Beiträge seit 2011
vor 10 Jahren

Über die Einzelschritt-Methode von VS bin ich das schon durchgegangen.
Leider ohne Erfolg.

Das versteh ich nicht, du musst doch sehen ob sich bei irgend einer Zeile der Text deiner TextBox ändert, wenn nicht an welcher stelle deines Programmes verschwindet er dann?

Warum schreibst du die länge überhaupt wieder zurück in die Textbox? an dem wert länge ändert sich ja nichts?

Verschwindet der text auch wenn deine KeyDown Methode keinen Code enthält?
Am besten einfach mal debuggen und sehen an welcher stelle die Text property deiner TextBox leer wird.

Nebenbei dein Code enthält 3 mal exakt das selbe nur das der index_pa sich unterscheidet. DRY

P
Paddy93 Themenstarter:in
62 Beiträge seit 2011
vor 10 Jahren

Tut mir Leid, aber ich bekomm es nicht hin. Ich hab das ganze jetzt noch einmal per Einzelschritt durchdebuggt.

Vielleicht habe ich das auch falsch erklär an welcher Stelle der Text verschwindet.
Ich versuchs nochmal erneut.
In meiner Form befindet sich eine ComboBox mit 3 Einträgen.
Darunter eine Groupbox mit 5 Textboxen.
Einmal die Temperatur, Länge, Ausdehnungsfaktor und Errechnetes Maß.
Der Benutzer gibt aber nur in der TextBox Temperatur und Länge etwas ein. Nachdem in der TextBox Länge ein Zahl eingegeben wurde und auf 'Enter'- gedrückt wurde verschwindet nur der Inhalt in der TextBox Länge, die anderen Werte sind werden richtig ausgerechnet. Der EventHandler Key-Down bezieht sich auf die TextBox tbLaenge
Drücke ich erneut die 'Enter'-Taste ist der der Wert wieder da.

Zum besseren Nachvollziehen kann ich auch gerne mein Projekt per Email zusenden.
Ich verzweifle nur gerade.

771 Beiträge seit 2009
vor 10 Jahren

Lass doch mal die Zeile(n)


tbLänge.Text = Convert.ToString(länge);

weg. Hat Console32 ja schon geschrieben, dass das Zurückschreiben sinnlos ist.

K
10 Beiträge seit 2009
vor 10 Jahren

hi Paddy93,

ich kenne dein problem.

hier die lösung

anstelle von: tbLänge.Text = Convert.ToString(länge);

schreibst du einfach: tbLänge.Text = länge.ToString("F");

try it out and say Baba to me 8)

P
Paddy93 Themenstarter:in
62 Beiträge seit 2011
vor 10 Jahren

DU bist der Baba, funktioniert einwandfrei 😃