Grundsätzliche Frage zu den verschiedenen Boxen - Arten

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Spawnie.

    Grundsätzliche Frage zu den verschiedenen Boxen - Arten

    Hallo zusammen,

    vorweg vielleicht ein paar allgemeine Worte die nix mit der eigentlichen Frage zu tun haben:
    Spoiler anzeigen
    Ich bin kein Profi was das Programmieren angeht. Ich hatte vor einigen Jahren mal eine überschaubare Veranstaltung zu dem Thema, basierend auf VB6 und hauptsächlich Console. Alles weitere habe ich durch lesen, fragen und probieren angegangen.
    Somit fehlt es mir sicherlich etwas an der Übersicht, die ein Profi hat, der direkt ein Thema überblicken und analysieren kann. Ich hingegen hangle mich von Problemstelle zu Problemstelle und versuche diese für mich zu lösen. Somit kann es natürlich vorkommen, dass meine Lösung für Problem1 das Problem2 so verändert, dass man kreativ werden muss. Ebenso passiert es mir oft, dass ich Hinweise und Tipps einfach zum ersten Zeitpunkt nicht verstehe (meist wenn es nur ein Einzeiler ist, der für "Fachleute" genug Aussage hat, für mich aber nicht) und übergehen muss, später dann aber doch drauf zurück komme, wenn ich aus einer anderen Sicht dann doch verstanden habe um was es nun geht.
    Habt daher bitte etwas Nachsicht, wenn ich nicht immer die geraden Wege gehe, doofe Fragen stelle, oder vielleicht Dinge kombinieren will die kein Fortgeschrittener tun würde. Danke


    Ich habe während meiner letzten Versuche diverse Tipps bekommen und auch angewendet, wobei ich aber oftmals die Hintergründe nicht verstehe. Auf zwei Punkte würde ich gerne eingehen.

    1) Richtextboxen bei einem Programm was TXT einliest, modifiziert und wieder TXT ausgibt.
    Ich habe an einer Stelle empfohlen bekommen diese auf "ReadOnly" zu stellen. Allerdings fand ich gerade die Editierbarkeit des Textes in einer RTB hilfreich. Nun sagt ihr das ja nicht ohne Grund, vermute ich. Was ist der Hintergrund? Was kann der User unerwartetes / blödes tun wenn er doch in einer RTB schreiben kann? Kann der User dort wirklich Dinge anstellen die beispielsweise das Programm abschießen würden? Es muss ja einen Grund haben wieso ihr empfehlt diese Möglichkeit abzuschalten.

    2) Datentransfer zwischen den verschiedenen Boxen - Arten, wieder
    bei einem Programm was TXT einliest, modifiziert und wieder TXT ausgibt.
    Es ist nicht sonderlich schwer Textinhalte zwischen 2 Arten von Boxen hin und her zu schieben. Aber ist es auch "stabil" - sinnvoll lassen wir mal außen vor.
    Ist es in Ordnung den Inhalt einer RTB in eine Listbox zu schieben? Oder kann eine RTB Dinge die einer Listbox sauer aufstoßen würden, beispielsweise Zeichen annehmen die die Listbox ablehnt, oder kann es z.B. bei harten und weichen Zeilenumbrüchen Probleme geben wenn man aus der RTB in die zeilengebundene Listbox wechselt, oder oder oder?
    Wie gesagt, es geht nicht um die Frage ob es Sinn macht (Wie man im Spoiler sieht, kann es speziell für mich schon mal Sinn machen), sondern nur darum, ob ich mir bei der Anbindung RTB --> LB eine Schwachstelle einhandele, da aus der RTB durchaus unverdauliches Material kommen könnte?
    Habt daher bitte etwas Nachsicht, wenn ich nicht immer die geraden Wege gehe, doofe Fragen stelle, oder vielleicht Dinge kombinieren will die kein Fortgeschrittener tun würde. Danke

    Die einzige dumme Frage ist die, die man nicht stellt ;)

    Nen Tipp von mir: Kauf dir ein Buch über VB.NET und arbeite dieses durch. Sich in Foren und per Google das Wissen anzueignen ist aus meiner Sicht suboptimal und sollte nur ergänzend zu einem Buch sein, wenn man an einer Stelle nicht weiter kommt.

    Ich habe an einer Stelle empfohlen bekommen diese auf "ReadOnly" zu stellen.

    Das war nur auf dein Programm bezogen, da du dort ja automatisiert Dinge geändert hast. Dort sollte/musste der User ja nichts manuell machen, daher wurde dir empfohlen ihm diese Möglichkeit ganz zu nehmen.

    Ist es in Ordnung den Inhalt einer RTB in eine Listbox zu schieben?

    Das sind 2 komplett unterschiedliche Steuerelemente. Die RTB ist ein "Texteditor" wo es auch Farbe und Bunt und Stile gibt, die ListBox Listet Dinge auf und macht diese auswählbar.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    Spawnie schrieb:

    Was ist der Hintergrund?
    Du hattest das Problem so beschrieben, dass es sinnvol schien, die RTB readonly zu machen. Sieh Dir dazu den anderen Thread noch mal an.
    Deine zusammenhanglose Frage stiftet ansonsten nur Verwirrung. Füge ggf. einen Link zu diesem anderen Thread ein.

    Spawnie schrieb:

    Ist es in Ordnung den Inhalt einer RTB in eine Listbox zu schieben?
    Den Inhalt nicht, ggf, aber die einzelnen (mit Zeilenvorschub getrennten) Zeilen, die Du mit der Property .Lines abrugen kannst:

    VB.NET-Quellcode

    1. ListBox1.Items.AddRange(RichTextBox1.Lines)

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Welches Buch wäre denn deiner Meinung nach zu empfehlen?

    OK, ich dachte die Empfehlung "ReadOnly" sei generell. Wenn der User nix machen kann, kann er auch nix Dummes tun 8o
    Ich hatte es eher so verstanden, dass die RTB Möglichkeit bietet, dass ein User sie "außerhalb dessen wofür sie gedacht ist" betreibt, was in der Folge dann Ärger machen könnte.

    Daher ja auch die Frage, ob es grundsätzlich Kompatibilitätsprobleme gibt zwischen diesen beiden Arten Boxen. Könnte ja z.B. sein, dass die einfacher gestrickte LB allergisch auf optisch formatierten Text reagiert, oder dass in der RTB Zeichen möglich wären, an der sich die LB verschluckt oder so etwas in der Art.

    Ja, mit Inhalt meinte ich die einzelnen Zeilen.
    Das habe ich schon gemerkt, dass es mir gerne mal die ganze RTB in eine Zeile klatscht.
    Da ging ja auch mein erster Gedanke in Sachen Kompatibilität hin, ob z.B. die LB nur harte Zeilenumbrüche sieht, oder auch weiche.

    Wo ihr sicherlich auch recht habt ist die Ansicht, dass das Programm selbst den Text erzeugt, nicht der User. Genau dafür ist es da.
    Und eigentlich hatte ich auch lange vor es so zu lassen.
    Aber es kommt ja immer anders. Dann ist da ein Zeichen nicht richtig, und statt kurz zu fixen musste in die Quellen.
    Deswegen finde ich den Umweg über eine eigene Form mit RTB nicht mal übel. Das eigentliche Programm erzeugt den Text, ohne dass der User eingreifen kann - aber trotzdem hat er über ein separates Menü die Option dazu. Zumindest für mich passt das ganz gut zum eigentlichen Bild.

    Ja, die RTB kann einiges hübsch machen, da muss ich mich mal schlau machen, wie ich z.B. gewisse Schlagworte farblich absetze, als optische Navigationspunkte im Text...

    Spawnie schrieb:

    Welches Buch wäre denn deiner Meinung nach zu empfehlen?


    Oh oh, wenn ich dir das jetzt schreibe, fällt mir gleich ein User ein, der mich steinigt ;) letztendlich ist es (fast) egal welches Fachbuch du nimmst, hauptsache die Basics sind drin. Der Rest steht im Internet.

    Ich hab damals mit dem C# Buch von Rheinwerk Computing gelernt. Das hat mir sehr (!) geholfen am Anfang.
    Hier das VB pondon (schreibt man das so?) amazon.de/gp/aw/d/3836237032/r…ry_view_div_1474742073141

    Aber: Die Objektorientierung konnte mit das Buch nicht erklären. Das haben meine Kollegen dann übernommen.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @mrMo Nein, das schreibt man Pendant. ;)

    @Spawnie Was das Buch betrifft, schau dir mal rheinwerk-verlag.de/openbook/ an. Da werden die Bücher des Rheinwerk Verlags unter dem Namen "Galileo Openbooks" kostenlos als E-Books angeboten. Da findest du sowohl Bücher zu VB.NET als auch zur Objektorientierten Programmierung generell.

    Du solltest auch unbedingt die Bücher zur Hilfe ziehen und nicht auf YouTube Videos von Copy-Paste-Skriptkiddies setzen. Aber, Bücher können dir lediglich das Wissen übermitteln! Die Kompetenz und alles was sonst noch zum Programmieren dazugehört lernt man fast ausschließlich durch machen.
    Daher mein Tipp: Mach irgendwas, programmier irgendwas - Hauptsache du versuchst das Wissen aus den Büchern um- und einzusetzen. Fang ruhig klein an, Glücksmomente wenn Sachen funktionieren (sein sie auch noch so klein) sind besser als blank liegende Nerven wenn irgendwas nicht klappt.

    Und wenn du Fragen hast, weißt du ja, wo dir geholfen wird ;)
    (11833, nein Spaß :D )

    Grüße
    Väinämö
    Oh ja, wie Recht Vainamo V hat. Mit den Büchern, und mit "selber machen". Was hab ich mich damals über Kleinigkeiten gefreut :)
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    Spawnie schrieb:

    Kompatibilitätsprobleme gibt zwischen diesen beiden Arten Boxen
    Einer Listbox kannst Du im Prinzip alles hinzufügen (Strings, Bilder, URL-Adressen, Zahlen(-kolonnen), usw), einer RichTextBox kannst Du ausschließlich (formatierten oder unformatierten) Text hinzufügen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Spawnie Eine ListBox zeigt lediglich an, sie verarbeitet nicht.
    Beschreib mal genau, was passieren soll.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Da hab ich mich blöd ausgedrückt.
    Die LB soll nur anzeigen, sonst nix :)
    Die Frage war nur, ob die anzuzeigenden Daten aus einer RTB stammen dürfen, oder ob in dieser RTB Dinge passieren könnten, die die LB dann nicht umsetzen kann.
    Keine Ahnung, dass man beispielsweise in der RTB ä,ü,ö,ß eingeben könnte, dass dann aber zu Fehlern führt wenn man es zur Darstellung rüber in die LB schiebt. So was in der Art, dass man eben in der RTB Dinge tun könnte, die dann aber zu Fehlern und Problemen führen, wenn man es zur Anzeige in die LB schiebt.
    @Spawnie Wozu soll das ganze gut sein?
    Sollen da die einzelnen Items "ä", "ö", "ü" angezeigt werden?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Nee :)

    Ich denke wir haben uns hier etwas verrannt.
    Die Frage war ganz allgemein. Ob es aus Sicht der Kompatibilität in Ordnung ist, eine LB aus einer RTB füllen zu lassen.
    Ich bin ja noch ganz am Anfang und weiß ja nicht mal abschließend was die Boxen so alles können.

    Es hätte ja sein können, dass die Idee ganz blöde ist, weil der User in der RTB Dinge einfügen kann, die die LB nicht verdauen kann.
    Wie gesagt, der volle Umfang der Boxen ist/war mir ja nicht klar, daher die Frage.

    Bei der RTB hat der User ja alle Möglichkeiten und kann einfügen was er will, sogar die Formatierung bleibt erhalten.
    Wenn nun wer von euch beispielsweise gesagt hätte, RTB --> LB ist ne doofe Idee weil... die formatierter Text als Buchstabensalat (ich weiß das es nicht so ist, das ist nur ein Bsp) in der LB ankommt, dann hätte ich nen anderen Weg nehmen müssen. Immerhin hat der User ja recht viele Freiheiten, was er in die RTB steckt und ich war mir nicht sicher, ob das vielleicht zu viele sind. Im günstigsten Fall gehen die zusätzlichen Informationen einfach verloren (wie die Formatierung), am dümmsten Fall bereitet sowas Ärger. Und das wollte ich verhindern, dass "der User" durch die RTB die Möglichkeit erhält Dinge ins Programm zu ziehen, die die LB nicht verdauen kann.

    Das mit ö, ü, ä war nur ein Beispiel welche Art von Problemen ich meine, auch wenn es in dem Fall nicht so ist.
    Ich kam da nur drauf, weil ich außerhalb von VB mal da drüber gestolpert war. Ich hatte ein kleines Script was alle Filme in einem Ordner in eine TXT schreibt, und eine Excel Tabelle die dann diese TXT importiert.
    Die Ordner im Windows darf ich natürlich mit allen Buchstaben benennen, aber während meines kleinen "Behelfs - Fernsehhefts" wurden daraus Buchstabensalat.

    Aber es scheint ja soweit alles in Ordnung, die LB kann den Strom aus der RTB verkraften, soweit passt dann also alles.