Allgemeine Funktionen besonders für Events



  • Kann mir mal jemand einen guten Buchtipp oder einen Link geben.Suche ein Windows Forms Tutorial. Also mit VC++ die Forms erstellen,etc. ist einfach der automatisch generiete Code ist auch offensichtlich. Aber wie lasse ich den Bentutzer zum Beispiel Werte in eine Vabriable einlesen(mithilfe eines Buttons).
    Und es dann mit dem Text-Fenster wieder ausgeben? Kann mir jemand mal ein paar nützliche Funktionen geben bitte

    Code
    

    verwenden.
    Danke
    C-Chris



  • Schau dir doch mal den generierten Code an. z.B. der Text von Labels wird ja so angegeben:

    this->labelX->Text = L"XXXX";
    

    Das "L" vor dem Text kannst Du weglassen. Wenn du in einem Label nicht einen festgelegten Text ausgeben lassen willst, kannst Du schreiben(irgendwo im Code z.B. in einer der Funktionen zu Buttons, nicht dort wo der generierte Code steht)

    this->labelX->Text = Convert::ToString(y); /*für y kann dort alles mögliche stehen...*/
    

    Funktionen, die beim Klick auf einen Button aufgerufen werden erstellst Du, indem Du auf besagten Buton doppelklickst. Du wechselst automatisch in den Code-Modus, wo du eine leere funktion findest(der Schreibcursor steht sofort drin...)
    dort kannst Du die Zeile von oben zB. einfügen, sodass beim klick des Buttons der Text des Labels von nun an die Variable y(oder sonst was) ist.

    Wenn Du Variable einlesen willst, versuche es am besten mit einer Textbox. Lies dir dazu einfach mal die MSDN durch.



  • Okay! Danke für die kleine Instruktion. Ich habe in der zwischenzeit eh schon viel in der MSDN gesurft, aber die ist manchmal nicht allzu ausführlich. Auf jeden Fall steht da sowas wie du es mir gerade erklärt hast nicht drinne. Könnte man theoretisch den generierten Code verändern? Wenn man ihn dann im [Entwurf] in Ruhe lässt.

    /danke



  • Mr X schrieb:

    Schau dir doch mal den generierten Code an. z.B. der Text von Labels wird ja so angegeben:

    this->labelX->Text = L"XXXX";
    

    Das "L" vor dem Text kannst Du weglassen. Wenn du in einem Label nicht einen festgelegten Text ausgeben lassen willst, kannst Du schreiben(irgendwo im Code z.B. in einer der Funktionen zu Buttons, nicht dort wo der generierte Code steht)

    this->labelX->Text = Convert::ToString(y); /*für y kann dort alles mögliche stehen...*/
    

    Funktionen, die beim Klick auf einen Button aufgerufen werden erstellst Du, indem Du auf besagten Buton doppelklickst. Du wechselst automatisch in den Code-Modus, wo du eine leere funktion findest(der Schreibcursor steht sofort drin...)
    dort kannst Du die Zeile von oben zB. einfügen, sodass beim klick des Buttons der Text des Labels von nun an die Variable y(oder sonst was) ist.

    Wenn Du Variable einlesen willst, versuche es am besten mit einer Textbox. Lies dir dazu einfach mal die MSDN durch.

    Das ist doch kein Button sondern eine ListBox. Aber ist vom Prinzip eh das selbe.(das schönste Beispiel im Mircosoft Devolper Network.



  • Könnte man theoretisch den generierten Code verändern? Wenn man ihn dann im [Entwurf] in Ruhe lässt.
    

    Theoretisch schon, jedoch ist es nicht ratsam, bei mir ist es dadurch schon passiert, dass der Designer nicht mehr funktionierte. Falls man Variablen als Inhalt eines Label etc. nimmt, geht dies jedoch nicht im generierten Code, da dieser teilweise nach einem Wechsel in den DesignModus überschrieben wird und dann ist das mit der Variable futsch.
    Beim ändern dieses Codes muss/sollte man sich strickt an den Stil des Designers halten.
    Die MSDN finde ich eigentlich ganz gut, manchmal jedoch nicht sehr verständlich und manchmal auch sparsam mit Beispielen oder die Beispiele sind so gewaltig, das man die betreffende Funktion erstmal suchen muss...

    Eine ListBox ist meines erachtens nach ein Steuerelement, was von sich aus nur duch ein ?? Change-Event ?? reagiert, ansonsten muss man das ausgewählte abfragen8z.B. wenn ein Button gedrückt wird. Ich muss aber gestehen, dass ich eine ListBox noch nie wirklich gebraucht habe, ich habe jetzt also nur aus meinem eigenen Versttändnis, sowie der Regelmäßigkeit der Funktionen/Methoden/Funktionsweisen der Steuerelemente gesprochen

    hilfreich zum Thema ListBox könnte dieser MSDN-Artikel sein:
    http://msdn2.microsoft.com/en-us/library/system.windows.forms.listbox_members.aspx



  • Danke für den MSDN-Link. Ich schaue aber lieber auf de_De nach da ist es auf Deutsch. Aber manche Funktionen da scheinen meine .dlls nicht zu haben. 😉



  • Okay so kann man Textausgabe aus einer Variable machen. Ich habe die ganze Nacht in der MSDN gesurft aber nichts gefunden wie man Texteingabe die in einer Variable gespeichert gemacht wird? Könnt ihr mir helfen? Ich werde weiterhin die MSDN noch auschecken. 😉



  • Okay so kann man Textausgabe aus einer Variable machen. Ich habe die ganze Nacht in der MSDN gesurft aber nichts gefunden wie man Texteingabe die in einer Variable gespeichert wird macht?!



  • Du möchtest z.B. den Inhalt einer TextBox in eine Variable speichern?
    Wenn ja:
    Nehmen Wir an, die Textbox hat die Einschränkung, dass nur ein Zeichen eingegeben werden kann. Du kannst also schreiben:

    char a;
    a = Convert::ToChar(this->textBoxX->Text);
    

    mfg
    Mr X



  • wchar_t AccountName[10];
    for (int i = 0;i>=9;) {
    AccountName[i] = Convert::ToChar(this->AccountNameBox->Text);	
    i = i+1;			 
    }
    

    Würde das so funktionieren oder gibt es eine bessere Methode? Weil wenn man ja backspaced dann funzt das nichmehr. Wie kann ich alles auf einmal einlesen. Das ist nur eine Zwischenlösung.



  • Okay der Ansatz war Mist aber das hier ist doch ganz gut oder:

    String ^AccountName;
    AccountName = Convert::ToString(this->AccountNameBox->Text);
    

    Was halten sie davon?



  • Warum willst Du einen String in einen String umwandeln?
    Folgendes reicht auch:

    Sring ^AccountName;
    AccountName = this->AccountNameBox->Text;
    


  • Habe ich auch schon herausgefunden aber trotzdem danke. Warum schreibst du auf Englisch deine Signatur?



  • Weil ich eigentlich fast nur auf englisch schreibe...



  • i = i+1;
    

    hier könntest Du

    i++;
    

    schreiben, das ist die Kurzform für deine Zeile.

    Warum schreibst Du das erhöhen von i eigentlich nicht in die for-Schleife:

    for (int i = 0;i>=9; i++) {
    AccountName[i] = Convert::ToChar(this->AccountNameBox->Text);
    }
    

    Hierdurch wird der Zähler mit jedem Schleifendurchlauf um 1 erhöht.

    EDIT: 🤡 Ich habe übersehen das Du eine andere, bessere Lösung gewählt hast, von da an gilt die for-Schleife garnicht mehr...

    mfg
    Mr X



  • Wenn schon würde man ++i schreiben



  • Wenn schon würde man ++i schreiben

    Verstehe ich jetzt nicht...



  • Ich dafür aber wenn ++i wird vor dem Durchlaufen erhöht und bei i++ danach post und prä denke ich?! Aber in diesem Fall wäre i++ doch richtig weil es ja erst in Feld[0] geschrieben wird. Diese Methode war natürlich Mist weil man den Text dann nicht korrekt bearbeiten konnte.

    //...
    {
    string ^reinschreibvariable;
    reinschreibvariable = this->TEXTBOXNAME->text;
    }
    //so finde ich das ganze um einiges geschickter und professioneller
    //...
    


  • Weis hier jemand etwas über Dateispeicherung?
    oder wie initialisierie ich eine Instanz?
    z.B.

    //code hier 
    System::Xml::XmlImplementation::XmlImplementation(); //hierzu Instanz initialsieren. Das ist zwar Grundlage aber ich finde nix brauchbares im I-Net.
    


  • Meinst Du mit Datenspeicherung in Datei schreiben? oder meinst Du daten während der Laufzeit des Programmes speichern? Oder meinst Du Sachen wie Datenbänke?


Anmelden zum Antworten