mehrere Checkboxen auslesen und Text ausgeben

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von iphone747.

    mehrere Checkboxen auslesen und Text ausgeben

    Hallo Visual-Basic Freunde,

    ich bin leider noch totaler Anfänger in Visual-Basic und ich hoffe ich bin hier richtig.

    Da ich oft aus verschiedenen Textbausteinen auswähle und mich das
    ständige Kopieren jedes einzelnen Textbausteines etwas nervt wollte ich
    mir dazu ein kleines Programm erstellen, das mir die passenden Textbausteine in ein Textfeld ausgiebt. Leider stoße ich schon jetzt
    auf ein Problem.

    Um euch mein Vorhaben leichter erklären zu können habe ich euch hier mal einen screener meiner GUI hochgeladen:

    Ich würde gerne jeder Checkbox einen Text zuweisen, dass wenn die
    Checkbox ausgewählt wird und der Button "Erstellen" gedrückt wird der
    Hinterlegte Text im Textfeld "Ausgabe" eingefügt wird. Das einfügen des
    Textes funktioniert schon. Allerdings wird immer nur der Text einer Checkbox ausgegeben. Sind also zwei
    gleichzeitig aktiviert so wird trotzdem nur der Text der letzten Checkbox gezeigt.

    Hier mein verwendeter Code:

    HTML-Quellcode

    1. If CheckBox1.Checked = True Then Ausgabe.Text = "Hallo World"
    2. If CheckBox2.Checked = True Then Ausgabe.Text = "Hallo"
    3. If CheckBox3.Checked = True Then Ausgabe.Text = "Hi"
    4. If CheckBox4.Checked = True Then Ausgabe.Text = "Tschau"
    5. If CheckBox5.Checked = True Then Ausgabe.Text = "Servus"


    Ich bedanke mich schon mal bei allen im Voraus fürs Lesen!
    Bilder
    • Checkbox.PNG

      57,13 kB, 527×669, 235 mal angesehen
    Du musst den Text anhängen, indem du sowas machst;

    VB.NET-Quellcode

    1. Ausgabe.Text = Ausgabe.Text & Environment.NewLine & "Hi"


    Environment.NewLine sorgt für einen Zeilenumbruch! Bei der ersten Zeile lässt du das einfach weg!
    Und dein Codetag ist übrigens HTML. Nimm in Zukunft den, auf dem VB steht ;)

    PS: Du kannst auch AppendText nehmen. Ist kürzer.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Danke nochmals für die schnelle Hilfe euch beiden.

    Ich habe mich für diese Ausgabeform entschieden, da ich mit der anderen nicht zurechtgekommen bin.

    VB.NET-Quellcode

    1. Ausgabe.Text = Ausgabe.Text & Environment.NewLine & "Hi"


    Ich weiß nicht so recht wie ich mein aktuelles Problem erklären soll ich hoffe man versteht was ich meine.

    Wenn z.B. folgende Checkboxen aktiviert werden:
    Checkbox1 -->Hello World
    Checkbox2 -->Hallo
    Checkbox3 -->Hi

    dann wird dies schön untereinander aufgelistet. Soweit so gut
    möchte ich eine Korrektur vornehmen, weil ich jetzt vielleicht Checkbox 2 doch nicht benötige und klicke nochmals auf den Button Erstellen wird "Hallo" aus der Liste geworfen und "Hi" rutscht logischer weiße eine Zeile Höher.

    Soweit so gut. Nun zum Problem.
    Fall 2
    Wenn ich die Checkbox1 gar nicht verwende und nur mit den anderen arbeite dann funktioniert es am anfang noch recht gut.
    z.B.
    Checkbox2 -->Hallo
    Checkbox3 -->hi
    Checkbox4 -->Tschau

    Wird allerdings hier eine Veränderung vorgenommen, sprich Checkbox 3 brauch ich jetzt doch nicht dann bleibt der alte Text stehen und die neuen kommen darunter. Ist ja auch irgendwie logisch weil ich in meinem "If" befehl ja angebe, dass wenn die Checkbox aktiviert ist er eine neue Zeile anfangen soll und den Text reinschreiben soll. Allerdings brauche ich die Texte nicht doppelt.

    Das kuriose ist wenn ich bei Fall 2 nach der beschriebenen Änderung die Checkbox 1 mit "Hello World" wieder einfüge verschwinden die ganzen unbrauchbaren kopien und es wird wieder alles schön angeordnet.

    Es klinkt etwas verwirrend deshalb hab ich euch hier noch eine Bilderserie hochgeladen.

    Ich hoffe Ihr könnt mir hierzu nochmal einen Tipp geben die Suchfunktion und Google konnte mir hierzu leider nicht weiterhelfen
    Bilder
    • 1.PNG

      42,96 kB, 525×666, 230 mal angesehen
    • 2.PNG

      41,15 kB, 523×667, 189 mal angesehen
    • 3.PNG

      51,92 kB, 523×665, 169 mal angesehen
    • 4.PNG

      37,49 kB, 521×663, 205 mal angesehen

    Quellcode

    1. Private Function GenerateString() As String
    2. Dim stringBuilder As New StringBuilder()
    3. If checkbox1.Checked Then stringBuilder.AppendLine("...")
    4. '...
    5. return stringBuilder.ToString()
    6. End Function


    Jetzt machst du einfach für jede Checkbox den selben Eventhandler rein(du brauchst nicht für jede Checkbox nen extra Eventhandler, einfach im Designer im Dropdown einen existierenden auswählen).
    Und dort rufst du jetzt einfach textBox1.Text = GenerateString() auf.
    Hoffe der Code stimmt so ca. hab grad keinen Editor zur Verfügung und vb ist mir alles andere als geläufig.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Entweder das, oder du bedienst dich gleich an einem anderen Control. Eine ListBox wäre hier dann angebrachter!
    Wenn du trotzdem alle Möglichkeiten etc mal durchsehen willst, dann lad dir dieses Buch runter: Klick
    Ist die 2008er Version. Es gibt auch schon die 2010er kostenlos, aber mir scheint das genauso gut, wenn nicht sogar 2005 reichen würde. Da ist alles grundlegende was du brauchst. Klar ändern sich auch Sachen, aber das ist nicht so schlimm für ganz neue Leute in VB.

    lg Trade
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Überhaupt wäre eine vernünftige Datenmodellierung angebracht, und zwar, bevor man ühaupt diskutiert, welche Controls man nutzen möchte.

    Es handelt sich ja um eine Verwaltung von Textbausteinen.
    Also da muß man Textbausteine zufügen/editieren/löschen/laden/speichern können, und zusätzlich auch die Kompositionen daraus.

    Konzeptionelle Frage ist auch, wie die Reihenfolge bestimmt wird, mit der die ausgewählten Textbausteine in die Komposition kopiert werden.
    @ErfinderDesRades,
    das was du geschrieben hast würde ich so sofort unterschreiben, den eigentlich sollte man sich schon Gedanken darüber machen wie man so einen Textbaustein event. Später mal editiert.

    Allerdings ist mein großes Problem, dass ich erst ganz am Anfang mit Visual-Basics stehe und ich derzeit froh wäre wenn der Aufbau in Statischer Form perfekt funktionieren würde. Insofern kann ich von dynamischen Funktionen derzeit nur träumen ;(


    Aber wenn wir schonmal bei dem Thema sind.
    Was würdest du mir den empfehlen wenn ich mein Vorhaben später auf ca. 40 Textbausteine auslegen möchte. Dazu sollte ich dazu sagen, dass die Textbausteine alle relativ klein ausfallen (meist nur ein Satz)

    Von den Event. 40 Auswahlkriterien würde ich aber zwei Gruppen machen wollen. In der Ersten Gruppe die Bausteine die oft verwendet werden und in der zweiten Gruppe die weniger gebraucht werden.
    Über die Reihenfolge habe ich mir bis jetzt noch keine Gedanken gemacht, da bei meinem bisherigen Versuch alles nacheinander kam :D
    naja - die Problemstellung lässt sich mit relationaler Datenmodellierung perfekt lösen.
    Das geht in Richtung Datenbänkerei, also dass man in Datensätzen und Tabellen denkt, aber bei so Kleinkram braucht man keine Datenbank.
    Relationale Datenmodellierung ist zunächstmal Konzipieren, und das scheint mir hier besonders einfach und plausibel:

    Also es gibt Textbausteine und Kompositionen - zwei zunächstmal vollkommen unabhängige Tabellen.
    Zusätzlich braucht man eine Mittler-Tabelle, deren Datensätze je auf einen Textbaustein und auf eine Komposition verweisen.

    Durch diese Architektur hat man jede Freiheit, einen beliebigen Textbaustein einer beliebigen Komposition zuzuordnen.

    Inne Anwendung wird man also Textbausteine anlegen, und dann legt man eine Komposition an, und klickst beliebige Baustein-Verknüpfungen da rein. Der ganze Sermon wird in eine Datei gespeichert, und wenn man das lädt, so hat man wieder alle Bausteine, aber auch alle Kompositionen wieder verfügbar.

    Diese Beziehung, die ich soeben modelliert habe, zwischen Bausteinen und Kompositionen, nennt man m:n - Relation inne Datenbänkerei.

    gugge auch die relationale GrundIdee

    Ich hab auch noch paar Tuts zur praktischen Umsetzung von das, aber das muß erstmal vollständig verstanden sein.
    @ErfinderDesRades,

    danke für deinen Lösungsvorschlag das kling alles schon mal sehr gut.
    Ich habe mir den Link von deiner Seite schon mal durchgelesen, allerdings muss ich mir das in den folgenden Tagen nochmals genauer anschauen (bin berufstätig und habe nur abends oder am Wochenende Zeit mich in die Materie einzulesen).

    Danke nochmals für deine Hilfe :thumbsup: ich glaub ich werde sie bestimmt noch ein paar mal benötigen.
    Bis dahin Hut ab für dein Tutorial liest sich echt super!