Laden...

Probleme mit PerformClick() ?!

Erstellt von ToFac3 vor 17 Jahren Letzter Beitrag vor 17 Jahren 16.119 Views
ToFac3 Themenstarter:in
30 Beiträge seit 2007
vor 17 Jahren
Probleme mit PerformClick() ?!

Morgen zusammn, ich habe folgendes Problem, ich habe für die Schule ein 1 zu 1 Nachbau des WinXP-Calculators und es funktioniert alles soweit ganz gut, nur wenn ich über KeyDown die Tastatur abfange und dann mit .PerformClick() sachen ausführe kommt folgender Fehler:

Aufruf (z.B.)


switch (e.KeyCode)
{
       case Keys.Enter: btn_gleich.PerformClick();
             break;
}

Das Click-Ereignis das wunderbar funktionier wenn ich mit der Maus auf den Button Klicke


        private void btn_gleich_Click(object sender, EventArgs e)
        {                                                       
            if (tbxeingabe.Text != "Teilen durch 0 unmöglich.")
            {

                char[] kommatest = new char[tbxeingabe.Text.Length];
                string ergtemp = ""; //zwischenspeichern des ergebnis
                bool komma = false; //ob komma vorhanden ist

                switch (operand)
                {
                    case '+':
                        {
                            if (!leoschen || mread || einsdurchx)
                                zweitezahl = Convert.ToDouble(tbxeingabe.Text);

                            ergebnis += zweitezahl;
                            ergtemp = Convert.ToString(ergebnis);
                            kommatest = ergtemp.ToCharArray();

                            for (int i = 0; i < ergtemp.Length; i++)
                                if (kommatest[i] == ',')
                                    komma = true;

                            if (komma)
                                tbxeingabe.Text = Convert.ToString(ergebnis);
                            else
                                tbxeingabe.Text = Convert.ToString(ergebnis) + ",";
                            break;
                        }
                    case '-':
                        {
                            if (!leoschen || mread || einsdurchx)
                                zweitezahl = Convert.ToDouble(tbxeingabe.Text);

                            ergebnis -= zweitezahl;
                            ergtemp = Convert.ToString(ergebnis);
                            kommatest = ergtemp.ToCharArray();

                            for (int i = 0; i < ergtemp.Length; i++)
                                if (kommatest[i] == ',')
                                    komma = true;

                            if (komma)
                                tbxeingabe.Text = Convert.ToString(ergebnis);
                            else
                                tbxeingabe.Text = Convert.ToString(ergebnis) + ",";
                            break;
                        }
                    case '/':
                        {
                            if (!leoschen || mread || einsdurchx)
                                zweitezahl = Convert.ToDouble(tbxeingabe.Text);
                            if (zweitezahl != 0)
                            {
                                ergebnis /= zweitezahl;
                                ergtemp = Convert.ToString(ergebnis);
                                kommatest = ergtemp.ToCharArray();

                                for (int i = 0; i < ergtemp.Length; i++)
                                    if (kommatest[i] == ',')
                                        komma = true;

                                if (komma)
                                    tbxeingabe.Text = Convert.ToString(ergebnis);
                                else
                                    tbxeingabe.Text = Convert.ToString(ergebnis) + ",";
                            }
                            else
                                tbxeingabe.Text = "Teilen durch 0 unmöglich.";

                            break;
                        }
                    case '*':
                        {
                            if (!leoschen || mread || einsdurchx)
                                zweitezahl = Convert.ToDouble(tbxeingabe.Text);

                            ergebnis *= zweitezahl;
                            ergtemp = Convert.ToString(ergebnis);
                            kommatest = ergtemp.ToCharArray();

                            for (int i = 0; i < ergtemp.Length; i++)
                                if (kommatest[i] == ',')
                                    komma = true;

                            if (komma)
                                tbxeingabe.Text = Convert.ToString(ergebnis);
                            else
                                tbxeingabe.Text = Convert.ToString(ergebnis) + ",";
                            break;
                        }
                }

                leoschen = true;
                userkomma = false;
                gleichZeichen = true;
                mread = false;
                einsdurchx = false;
                if (btn_gleich.Focused)
                    tbxeingabe.Focus();
                tbxeingabe.DeselectAll();

            } 
            else
                System.Media.SystemSounds.Beep.Play();
        }

(Is keine Profi-Arbeit ich weis 😄)

Der Fehler der kommt wenn ich das 2te mal mit Enter da rein gehe(beim ersten druck auf Enter kommt also kein fehler, erst beim 2ten)

Wäre nett wenn jemand helfen könnte.

Wem die Scheisse bis zim Hals steht, der sollte den Kopf nicht hängen lassen.

1.665 Beiträge seit 2006
vor 17 Jahren

Ganz grundsätzlich geht es bei dem Fehler wohl darum, dass ein ein nicht-numerischer Wert nach Double gecastet werden soll. Wie willst du aus einem Komma z.B. auch nen Zahlenwert erhalten.
Was steht denn zu diesem Zeitpunkt in 'tbxeingabe.Text' ?

ToFac3 Themenstarter:in
30 Beiträge seit 2007
vor 17 Jahren

Zu diesem Zeitpunkt kann da eine belibiege Zahl stehen(ich habs ausgetestet) aber er zeigt an dass das Feld leer ist und deshalb gibs beim Umwandeln das Problem

PS: Aber sonst habe ich keine Probleme mit dem Umwandeln.

Wem die Scheisse bis zim Hals steht, der sollte den Kopf nicht hängen lassen.

738 Beiträge seit 2007
vor 17 Jahren

beim umwandeln von string in einen Datentypen wie int, double, etc,.. empfiehlt sich immer:


double.TryParse();

ToFac3 Themenstarter:in
30 Beiträge seit 2007
vor 17 Jahren

Wäre nett wenn du mir sagen könntest was genau TryParse() macht und wie ich damit umwandle, da ich Anfänger bin!

Wem die Scheisse bis zim Hals steht, der sollte den Kopf nicht hängen lassen.

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo ToFac3,

das ist definitiv eine Frage an die SDK-/MSDN-Doku, nicht an uns.

herbivore

ToFac3 Themenstarter:in
30 Beiträge seit 2007
vor 17 Jahren

Aber die MSDN fühlt sich schon vergewaltigt so offt wie ich drin bin :evil:
Natürlich kucke ich in die Hilfe aber die is gar nicht so hilfreich, zumindestens nicht immer.

Wem die Scheisse bis zim Hals steht, der sollte den Kopf nicht hängen lassen.

738 Beiträge seit 2007
vor 17 Jahren

aber genau so fragen wie: "wie funktioniert TryParse()" sind eindeutig fragen für die hilfe
gerade bei TryParse ist die MSDN ewig lang, inkl. bsp und so....

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo ToFac3,

wie man double.TryParse benutzt erklärt sie sehr ausführlich, sogar mit Codebeispielen. Nochmal: Wie man eine Methode benutzt, ist eine Frage an die Doku und nicht an uns.

herbivore

1.665 Beiträge seit 2006
vor 17 Jahren

Falls du VS benutzt; ist die Code-Dokumentation so schlecht in den .NET Klassen?
Der Name sagt schon aus, dass (try) versucht wird ein Objekt umzuwandeln (Parse).
Du kannst aber folgendes machen:

try
{
   double dValue = Convert.ToDouble(tbxeingabe.Text);
}
catch { }

das ist grob gesagt in etwa das, was in TryParse passiert. Jedenfalls erhältst du so das selbe Ergebnis ohne Exception.

Allerdings halte ich dein Problem an dieser Stelle ein Problem in deiner Architektur des Programms. Zu diesem Zeitpunkt sollte da nichts schiefgehen dürfen.

Schau mal nach MaskedTextBox. Versuch die Funktionalität der Eingabemöglichkeiten abzukapseln (Kommaeingabe, usw...)

ToFac3 Themenstarter:in
30 Beiträge seit 2007
vor 17 Jahren

Ok jetzt weis ich das ich damit teste ob umgewandelt werden kann, nur hilft mir das leider nicht weiter, dann kommt zwar ein False und die Fehlermeldung gibs nicht mehr
aber es hilft mir nicht weiter, denn eigentlich steh ja ne Zahl in der Textbox und wenn ich aber durch Enter mit .PerformClick() (wenn ich das zweite mal Enter drücke wohl gemerkt) hinspringe kommt ein Fehler oder jetzt eben kein Fehler mehr sonder dann passier halt nichts. Er sollte aber addieren, was er auch tut wenn ich mit der Maus klicke!

Hilfe!!

MfG ToFac3

Wem die Scheisse bis zim Hals steht, der sollte den Kopf nicht hängen lassen.

ToFac3 Themenstarter:in
30 Beiträge seit 2007
vor 17 Jahren

Die textbox is readonly=true, mann kann da entweder per mausdruck auf die entsprechende Buttons oder per tastatur was eingeben, aber ich lasse nur Zahlen durch, von daher weis ich auch nicht was das soll, wie gesagt da steht zu dem Zeitpunkt eine Zahl drin, ne ganz normale Zahl.

MfG ToFac3

Wem die Scheisse bis zim Hals steht, der sollte den Kopf nicht hängen lassen.

738 Beiträge seit 2007
vor 17 Jahren

du selbst schreibst auf "tbxeingabe.Text" ein komma (einen beistrich um genau zu seien, ein punkt wäre okay)

damit kann Convert.ToDouble() nichts anfangen, und wirft eine exception

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo ToFac3,

wenn die Exception kommt, steht eben keine Zahl drin oder zumindest keine im richtigen Format (also entsprechend der Ländereinstellungen). So einfach ist das. Lerne den Exceptionmeldungen zu vertrauen. 🙂

herbivore

ToFac3 Themenstarter:in
30 Beiträge seit 2007
vor 17 Jahren

Aber ja, er zeigt ja auch an(wenn ich mit der maus über tbxeingab.text fahre) dass das Feld leer ist, was aber nicht der Fall ist da steh auf jeden fall eine Zahlm, oder hab ich im Code irgenwo ein Fehler den ich nicht sehe?

PS: Danke für alle Antworten

MfG ToFac3

Wem die Scheisse bis zim Hals steht, der sollte den Kopf nicht hängen lassen.

S
1.047 Beiträge seit 2005
vor 17 Jahren

naj was oll z.b. das hier?


if (komma)
  tbxeingabe.Text = Convert.ToString(ergebnis);
else
  tbxeingabe.Text = Convert.ToString(ergebnis) + ",";
break;

und genau das ist das problem... 23, ist nun mal keine zahl.... geh einfach mal das programm im debugger durch und schau dir die variableninhalte an

ToFac3 Themenstarter:in
30 Beiträge seit 2007
vor 17 Jahren

Ja da hast du recht 23, ist keine Zahl, aber 23, ist das selbe wie 23,00 o.ä und daher wird das komma beim addieren, subtrahieren usw vernachlässigt und ist nicht mehr da im Ergebnis (23, + 10, = 33) und daher gibs in dem sinne keine Fehlermeldung!
Ein Komma kann im Ergebnis nur dann entstehen wenn ich z.b. (12,5 + 10 = 22,5) sowas mache, und daher prüfe ich ob komma schon da ist und wenn nicht füge ich eins hinzu, iwe es eben der WinXP-Rechner auch macht!
Auserdem sag ich doch dass es reibungslos funktioniert wenn ich mit der maus auf die buttens klicke, also muss es, ich weis auch nicht wo liegen ?! 🙁

Wem die Scheisse bis zim Hals steht, der sollte den Kopf nicht hängen lassen.

738 Beiträge seit 2007
vor 17 Jahren

hi,

die von dir angehängt Fehlermeldung sagt ganz klar, dass zu dem Zeitpunkt wo die zeile mit dem Convert ausgeführt wird in "tbxeingabe.Text" irgendwas steht, was nicht da sein sollte, und nicht in double convertiert werden kann. Wo der Wert gesetzt wird, solltest du wissen. Wenn nicht debugge dein programm doch mit F10 SchrittfürSchritt durch, füge "tbxeingabe.Text" zum Watch hinzu und schau wo ein Wert gesetzt wird, der keine Zahl ist.

Wenn das problem weiter besteht, versuch mit einem minimal Programm den "Fehler zu reproduzieren". Dieses programm kannst du dann notfalls auch hier online stellen.

S
1.047 Beiträge seit 2005
vor 17 Jahren

@ToFac3
hm ok, wußt ich nicht das er so kulant da ist 🙂

de ntip mit dem debugger trotzdem mal machen^^

was mir noch aufgefalle nist:
in deinem switch hast du ne menge redundanten code... versuch doch ein paar allgemeine sachen vor bzw hinter das switch zu verlegen, und so sachen wie mit dem komma in eine methode auslagern... dann schauts auch gleich bissl kompakter aus =)

ToFac3 Themenstarter:in
30 Beiträge seit 2007
vor 17 Jahren

Danke für die Tipps@sheitman und nin, werds gleich mal alles ausprobieren!

Wem die Scheisse bis zim Hals steht, der sollte den Kopf nicht hängen lassen.

S
1.047 Beiträge seit 2005
vor 17 Jahren

if (!leoschen || mread || einsdurchx)

ach ja, falls du umlaute meidest, ö schreibt man oe nicht eo^^

B
1.529 Beiträge seit 2006
vor 17 Jahren

falls du umlaute meidest

Was allerdings technisch gesehen nicht nötig ist, da .NET auf Unicode basiert.
Nur wenn du deine Klassen an anderssprachige (bzw. anderstastaturlayoutige) weitergibst, sollten alle öffentlichen Klassen, Methoden und Felder in lateinischen Buchstaben geschrieben sein.

ToFac3 Themenstarter:in
30 Beiträge seit 2007
vor 17 Jahren

Das ist nur für alle Fälle, die Umlaute schreibe ich immer aus, sprich ö=eo usw. 😜

Wem die Scheisse bis zim Hals steht, der sollte den Kopf nicht hängen lassen.

738 Beiträge seit 2007
vor 17 Jahren

@ToFac3

dass das falsch ist und eigentlich ö--> oe richtig wäre ist die aber bewusst oder?

S
1.047 Beiträge seit 2005
vor 17 Jahren

dass das falsch ist und eigentlich ö--> oe richtig wäre ist die aber bewusst oder? worum es mir bei meinem beitrag eigentlich ging 👅

hat sich denn schon was beim debuggen ergeben?

ToFac3 Themenstarter:in
30 Beiträge seit 2007
vor 17 Jahren

Der Fehler ist imma noch da, ich habe zwar jetzt einege sachen in methoden ausgelagert aber der Fehler kommt trozdem, in der textbox steh was drin(eine Zahl) er zeigt aber an dass sie leer ist und deshalb gibs fehlermeldung beim umwandel, ich weis auch net weiter, muss wohl in 3 wochen meinen Dozent mal fragen ob er weiter weis.

PS: Ich weis natürlich das ö=oe ist und nicht umgekehrt 😁

Wem die Scheisse bis zim Hals steht, der sollte den Kopf nicht hängen lassen.

S
1.047 Beiträge seit 2005
vor 17 Jahren

kannst du dein projekt mal anhängen oer steht das unter irgendwelchen auflagen?

ToFac3 Themenstarter:in
30 Beiträge seit 2007
vor 17 Jahren

Nein das tut es nicht, hier kommt das Ding 8)

EDIT: Wie gesagt mit der Maus rumklicken kein Problem, mit der Tastatur gibs ärger!

EDIT2: Wäre nett wenn du deine Meinung dazu schreiben könntest oder verbesserungsvorschläge 😉

Wem die Scheisse bis zim Hals steht, der sollte den Kopf nicht hängen lassen.

S
1.047 Beiträge seit 2005
vor 17 Jahren

netter klon^^

zwei dinge gleich zu beginn:

  1. die infobox läd recht lange, was wohl ok is weil du paar daten sammelst, aber optisch schauts bei mir bissl putzig aus. ich benutzt das windows 2000 theme unter xp... da sind dann einige stellen weiß was nicht wirklich schick aussieht 😉

  2. problem konnte rekonstruiert werden... so mal schaun was faul is^^

ToFac3 Themenstarter:in
30 Beiträge seit 2007
vor 17 Jahren
  1. Freut mich dass du das Ding magst 😁
  2. Ich freu mich schon auf deine Vorschläge!

Wem die Scheisse bis zim Hals steht, der sollte den Kopf nicht hängen lassen.

S
1.047 Beiträge seit 2005
vor 17 Jahren

so, fehler is auch schon gefunden:

problem machen diese zeile hier in deiner methode
private void tbxeingabe_KeyDown(object sender, KeyEventArgs e)


if (leoschen)
    tbxeingabe.Clear();
leoschen = false;

vorgehen ist ja, das ich z.b. 8,+,8 und = drücke und danach enter drücke, und da hat loeschen den wert true wodurch clear aufs textfeld angewendet wird, was wohl nur den wert löscht aber nicht die anzeige...

leoschen = true;

setzt du ja am ende deiner click-methoden

lösung: das clear scheinst du ja zu machen damit bei zahlen und so nur die allein drinstehen, also mußt du wieder unterscheiden sodaß dies nur bei den zahlentasten (und wo es eigentlich frür gedacht ist) gelöscht wird...

ich versteh nicht ganz wie du zu dem problem kommst... du hast ja schonmal die eingabe per buttons die funktioniert, also 2x= nacheinader gibt kein problem, aber 2xenter nacheinader

normaler weiße dürften sich die verarbeitungsmethoden auch nicht großartig unterscheiden

vorschlag allgemein:
wenn dann alles so weit läuft, code aufräumen... da is soviel code drin wovon sicher die hälfte wieder redundant ist^^
erkenne muster dann kannst du sicher vieles zusammen fassen

z.b. kannst du viele buttonclicks mit einer einzelnen methode abarbeiten... du kannst ereignishandler an mehre buttons hängen, nur so als tip
und zur unterscheidung kannst du dann z.b. den text nehmen

nachtrag:
einige tastaturbehandlungen kannst du einsparen, alt+b würde z.b. auch so dein menü öffnen, das ist windows standardverhalten

ToFac3 Themenstarter:in
30 Beiträge seit 2007
vor 17 Jahren

Big THX für die schnelle Antwort@sheitman, ich werds sofort ausprobieren. Und dass der Code unsauber ist, ist klar da ich erst vor kurzen mit c# angefangen hab und von ereignishandlern usw. noch nicht viel weis, aber vielen dank für deine Hilfe die ist Super.

EDIT: Du hattest natürlich recht ich habs ausprobiert und es läuft wunderbar, DANKE
SCHÖN und was


                if (leoschen)
                    tbxeingabe.Clear();
                leoschen = false;

da zu suchen hat weis ich auch nicht, habs wohl noch vom ersten versuch dort vergessen 🤔 schäm

MfG ToFac3

Wem die Scheisse bis zim Hals steht, der sollte den Kopf nicht hängen lassen.

S
1.047 Beiträge seit 2005
vor 17 Jahren

da zu suchen hat weis ich auch nicht, habs wohl noch vom ersten versuch dort vergessen Baby schäm

stimmt, hab auskommetniert und zeigt erstmal keinerlei nebeneffekte^^

naja mußt mal überlegen was das da zu suchen hatte^^
aber du hast auch in den methoden überal "leoschen" mit drin, also muß es ja für was gut (gewesen) sein, oder?

nachtrag:
ok, mein verdacht scheint sich zu bekräftigen: das leoschen is dafür da, das du nach einem operanden (+ - * / = etc.) bei den zahleneingaben wieder ein leeres feld hast...

da du dieses loeschen nun bei den clicks der zahlen mit drin hast, brauchst du das im key-event nicht mehr, darum gehts auch so^^

nachtrag 2:
manchmal ist snet gut code weg z ugeben denn dann findet man sovielsachen^^

nun gut abe diesmal ein (gewollter?) bug:
man kann z.b. kein 0,05 eingeben, da du

if (tbxeingabe.Text != "0,")

als bedingung zur zahlenbehandlung drin hast...

ic hdenke mal hat was damit zu tun das du mit 0, startest und verhindern wolltest das jmd ohne eingabe was rechnet?
naja jedenfalsl hat es einen seiteneffekt, d.h. da mußt du dir was anderes überlegen 🙂

ToFac3 Themenstarter:in
30 Beiträge seit 2007
vor 17 Jahren

Huhu, also ich habe die falschen zeilen aus KeyDown einfach gelöscht, wie gesagt war wphl ein vergehen, alles funktionier auch ohne die doofen Zeilen 🙂.

Zum 2ten Problem, danke dass du mich darauf hingewiesen hast, das lässt sich aber leicht beheben indem du


        private void btn_0_Click(object sender, EventArgs e)
        {
            if (tbxeingabe.Text != "Teilen durch 0 unmöglich.")
            {
                if (tbxeingabe.Text != "0," || userkomma) // (|| userkommma) einfach dazu packen und schon funktioniert das ganze reibungslos  :D

MfG ToFac3

Wem die Scheisse bis zim Hals steht, der sollte den Kopf nicht hängen lassen.

S
1.047 Beiträge seit 2005
vor 17 Jahren

nice =)

worauf du noch achten mußt ist auf die rückstaste... das kann zu tollen ergebnissen führen wenn ich bei nem ergebnis wie z.b. 2,3E-04 die letzen stellen weg nehme... 😉

nachtrag: geht bei dir die taste für /? also ich hab da probleme mit shift+7...

nachtrag 2:solltest auch mal beide taschenrechner (original und kopie) nebeneinader legen und einfach mal bissl rumdrücken, verschieden kombinationen machen und schaun ob bei beidem imer das selbe raus kommt... zudem hat windowsrechenr mehr stellen als anzeige...

nachtrag 3: länger der textbox solltest du auc hmal bissl austesten, hab da auch paar seltsame effekte^^

ToFac3 Themenstarter:in
30 Beiträge seit 2007
vor 17 Jahren

Jo, danke aber das mit neben einander legen und drücken mach ich echt die ganze Zeit, oder besser, ich habs so gemacht, aber danke für den Tipp und das mit 2,3E-04, daran hab ich auch nicht gedacht, hmm.
Aber die '/'-Taste geht, mit Shift+7 gehts nicht da ich diese Kombination nicht abfange(ich weis einfach nicht wie ich 2 tasten aufeinmal abfange). Aber ich seh schon da ist noch einiges zu tun.

Thx für deine Umfangreiche Hilfe

MsG ToFac3

Wem die Scheisse bis zim Hals steht, der sollte den Kopf nicht hängen lassen.

S
1.047 Beiträge seit 2005
vor 17 Jahren

naja bezüglich der shif+7 taste sollte das ja kein problem sein, KeyEventArgs hat ja ne menge properties^^

vielleicht wäre es auch bessre nicht den keycod zu behandeln sondern dsa zeichen was zurck gegeben wird, weil die amis haben / woanders liegen...

1.665 Beiträge seit 2006
vor 17 Jahren

Mich reizt das Thema Taschenrechner schon lange und durch diesen Thread habe ich mich nun dazu überwunden das anzugehen 🙂

Habe ein schön funktionierendes Control erstellt, welches nur Zahlen mit oder ohne Komma animmt.
Würde es gerne mal online stellen, nur bräuchte ich noch zum Schluss eine kleine Hilfe: Wie kann ich verhindern bzw. umgehen dass bei Drücken der 'Enter'-Taste das Klick Event auf einem Button ausgelöst wird?
Möchte nämlich mit Enter/Return das Ergebnis anzeigen lassen und nicht einen Button-Click auslösen..
Danke

Edit: Habe es mal trotzdem angehängt

ToFac3 Themenstarter:in
30 Beiträge seit 2007
vor 17 Jahren

HI Junky,


private void Wasauchimmer_KeyDown(object sender, KeyEventArgs e)
{
      if (e.KeyCode == Keys.Enter/Return)
                 Textbox.Text = Convert.ToString(Ergebnis);
}


MfG ToFac3

Wem die Scheisse bis zim Hals steht, der sollte den Kopf nicht hängen lassen.

S
1.047 Beiträge seit 2005
vor 17 Jahren

ich glaub der trick bei junkyxls rechner ist, das der focus immer auf der textbox liegt

nachtrag: ich meinte natürlich ToFac3s Rechner...

1.665 Beiträge seit 2006
vor 17 Jahren

Original von sheitman
ich glaub der trick bei junkyxls rechner ist, das der focus immer auf der textbox liegt

Noe, die Zahlen die du per Tastatur eingibst, werden im KeyDown Event bei den Buttons abgefangen und als Zahl umgewandelt in die TextBox reingeschrieben.
Wenn du genauer hinsiehst, hat irgendein Button immer den Focus 🙂

S
1.047 Beiträge seit 2005
vor 17 Jahren

hab eure Namen vertauscht...

"ich glaub der trick bei ToFac3 rechner ist, das der focus immer auf der textbox liegt"

sollte das heißen... weiß doch garnet wie dein Code ausschaut JunkyXL^^

ToFac3 setzt nach jeder Aktion immer den Focus auf die Textbox, darum funktioniert das mit dem Enter auch bei ihm.

1.665 Beiträge seit 2006
vor 17 Jahren

Ich war trotzdem verwirrt und hab mir gedacht: Jetzt häng ich schon den Code an und er schaut ihn sich nicht an bevor er das behauptet 😉

Ist aber eine gute Idee anschließend den Focus auf die TextBox zu setzen, allerdings bekommen die Buttons keinen Focus mehr weil man dann den Text direkt in der TextBox eingibt und ich halte es für einen schönen Effekt wenn die gedrückte Zahl den entsprechenden Button fokusiert.

S
1.047 Beiträge seit 2005
vor 17 Jahren

naja, der calc von windows setzt auch keinerlei focus auf die buttons...

fände es ehrlich gesagt etwas verwirrend... mußt dich halt entscheiden ob ein enter den button dann auslöst wo er drauf steht oder aber ob er mit dem = gleich zu setzen ist

noch was anderes: gabs net ein property was verhindert das ein control den focus bekommt?