[Windows Forms] Wie Variablen an GUI Elemente binden?



  • Hi, nachdem ich nun schon den ganzen Tag versuche eine simple GUI Anwendung zu erstellen die einen Zahlenwert von einer Textbox in die andere kopiert, muss ich leider hier nachfragen. Das Web hat mir bis jetzt auch nicht geholfen, es ist unglaublich, aber ich habe nichts gefunden was dieses äusserst simple Beispiel veranschaulicht. Ich verwende VC++ 2005 Express Edition was ja angeblich absolut "easy to use" sein soll...

    Von VC 2003 (MFC-Anwendung) bin ich es gewöhnt das man einfach mit Rechtsklick auf z.B. die Textbox klickt und "Add Variable/Class" auswählt und das dann ein kleiner Assistent behilflich ist beim Deklarieren/Zuweisen einer Variablen zum Steuerelement. Danach machte man einfach einen Event-Hndler per Doppelklick auf den Button und mit z.B.

    UpdateData(TRUE);
    zahl1=zahl2;
    UpdateData(FALSE);

    ist die Sache dann auch schon erledigt.

    In VC++ 2005 krieg ich das absolut nicht gebacken. Komme mir mittlerweile echt ziemlich dämlich vor. Es wäre klasse wenn mir hier irgendwer in ein paar Schritten erkläen kann wie ich das hier analog gebacken bekomme bevor ich mir noch sämtliche Haare ausgerissen habe 😕 Ich kriegs wirklich nicht hin und bin langsam echt verzweifelt.



  • Es gibt hier dies MFC-Verfahren der "Variablen-Bindung" nicht mehr. Es gibt zwar DataBinding, das ist aber etwas anderes.
    Am einbfachsten ist:

    int iVal = int::Prase(textBox1->Text);
    

    bzw.

    textBox1->Text = iVal.ToString();
    


  • Hallo 🙂

    Naja - jeder hat bei anderen Sachen Probleme 😉
    Wenn Du auf die Textbox klickst, dann erscheint seitlich eine Leiste mit Eigenschaften. Das sind die Properties der Klasse Textbox (in diesem Falle). Da wirst Du einen (Name) und eine Text Eigenschaft finden. Das Feld genannt Text ist das, was Du suchst. Schreib mal etwas dort hinein und wechsle zur Codeansicht und suche Deinen Text.
    Dort wirst Du dann etwas wie

    MyTextBox->Text = bla bla;
    

    finden.
    Das ist Deine Variable. Die musst Du nur noch zuweisen.

    Ich hab jetzt nicht genau nachgesehen, aber ich denke, ich habe hier nicht falsch erklärt.



  • Ahhhh 🙂

    Krass, so einfach ist das, ich probier hier glaub ich echt alles zu kompliziert :D.

    Andere Frage, wie fange ich denn eventuell auftretende Exceptions ab? Habe es mit try and catch so wie ich es aus Java kenne probiert, doch das haut nicht so ganz hin. Gibt man z.B. Buchstaben statt zahlen ein wird das Programm mit einer "Syste.FormatException" beendet und meine Messagebox kommt nicht. Wie kann ich die Exceptions unterdrücken?

    try
    				{
    				 int x = int::Parse(textBox1->Text);				 
    				 x = x*10;				 
    				 this->textBox2->Text = x.ToString();
    				}
    				catch(char *str)
    				{
    					MessageBox::Show("Error");
    				}
    


  • try
    		{
    		// Code...
    		}
    		}
    	catch (System::Exception^ e)
    		{
    		// MessageBox::Show(e->Message);
    		};
    

    Hatte da ein ähnliches Problem *g*



  • Ah super danke. System::Exception^ e ist was mir fehlte 🙂


Anmelden zum Antworten