erstmaliges Starten Auswahlfenster mit 3 Optionen, Auswahl speichern und im Programm dann immer auf diese Auswahl zurückgreifen

  • VB.NET

Es gibt 46 Antworten in diesem Thema. Der letzte Beitrag () ist von VB1963.

    ich hab dir mal einen richtigen Dialog davon gemacht, ja?

    Achso - du hast übrigens recht: aus irgendeinem dunklen Grunde kann man ausgerechnet den SelectedIndex nicht im Desinger binden.
    Dann eben per Code - funzen tut das:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. ListBox1.DataBindings.Add("SelectedIndex", My.Settings, "Einstellung")
    3. End Sub


    gugge wichtig: DialogResultSample

    ach - und: böse Funktionen vermeiden

    und die anneren Tuts geb ich dir nochmal, dass du nix vergisst, beim durcharbeiten:
    Option Strict On!
    Settings richtig verwenden + binden
    AndAlso - OrElse
    Dateien
    • SpeichernTest.zip

      (16,27 kB, 79 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    zauber777 schrieb:

    VB.NET-Quellcode

    1. If ListBox1.SelectedItem = True Then
    Gib mal Deinem Projekt ganz fix Option Strict On.
    @ErfinderDesRades So isses. Du standest auf der nächsten Seite.
    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!
    Vielen Dank dafür.
    Habe somit auch schon wieder was neues gelernt. Den Punkt "Item" bei der Listbox kannte ich noch nicht. Ich kannte es bisher nur über den Befehl "ListBox1.Items.Add("Einstellung 1")" etwas einzutragen.

    Wo wird die Auswahl eigentlich gespeichert? Denn wenn ich die Exe-Datei des Programms lösche und neu erstelle, dann ist noch immer meine vorherige Auswahl gespeichert. Da ich es ja aber noch weiter testen muss, was ich da fabriziere müsste ich ja die Auswahl wieder löschen... Oder gibt es einen Befehl wie ich die Einstellung löschen kann?
    du hast es selbst so programmiert (zumindest wolltest du das), dass das Form nur öffnet, wenn noch keine Auswahl getroffen wurde :P Wenn du dich jetzt wunderst, dass du das nicht rückgängig machen kannst, dann spricht man von einem sog. "logischen Fehler" - im Unterschied zu Syntax- oder Laufzeit-Fehlern :P :P
    Zu Testzwecken kannst du ja zum Startup mw. Shared Control.ModifierKeys abfragen, und wenn die Shift-Taste gehalten ist, dann das Setting zurück auf -1 stellen.

    oder programmier ins Hauptform ieinen Knopf, der das Setting resettet.

    zauber777 schrieb:

    wie ich die Einstellung löschen kann?
    Erstell Dir einen Reset-Button und setz alle Settungs einzeln auf False.
    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!
    Ich habe bisher nur kleine einfache Programme geschrieben mit ein paar Buttons und so weiter. Leider habe ich auch nie Programmieren in einem Studiengang oder ähnliches gelernt. Daher stecke ich nicht so tief in der Materie drin.

    Daher könnt ihr euch garnicht vorstellen, wie Dankbar ich euch bis hier schon bin.

    Das Ziel oder der eigentliche Gedanke mit der Einstellung ist jedoch, dass wenn jemand mein Programm installiert, dass er am Anfang einmal diese Auswahl macht und dann nicht mehr gefragt wird bzw. über ein Toolstrip-Menu mal wieder zu der Abfrage kommt. Dies bekomme ich auch hin.

    Aber dazu müsste ich wissen, wie man die gewählte Einstellung wieder löscht!?

    In meinem eigentlichen Programm wird dann später öfters eine Abfrage gemacht, welche Einstellung gewählt wurde, da somit die Abläufe unterschiedlich sind.

    Ich habe unter "Projekt" --> "SpeichernTest-Eigenschaften" --> "Einstellungen" --> den Wert auf -1 gestellt und anschließend neukompilliert. Wenn ich es dann starte bekomm ich jedoch nicht die Auswahl. Das heisst es ist noch immer irgendwo gespeichert die Auswahl.

    Um die Auswahl zu Testen habe ich einfach mal für die jeweilige Auswahl ein anderes Programm eingetragen

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form2
    3. Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. Dim einst = My.Settings.Einstellung
    5. If einst = 0 Then
    6. Process.Start("mspaint.exe")
    7. End If
    8. If einst = 1 Then
    9. Process.Start("calc.exe")
    10. End If
    11. If einst = 2 Then
    12. Process.Start("wordpad.exe")
    13. End If
    14. End Sub
    15. End Class

    ErfinderDesRades schrieb:

    ähm
    :D Ich hatte nur die 3 RadioButton im Visier.
    Dann käme der Aha-Effekt, weil er ja ordentlich mit Option Strict On programmiert.

    zauber777 schrieb:

    Um die Auswahl zu Testen
    hätte ich einfach den Index in einem Label ausgegeben können.
    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!

    zauber777 schrieb:

    Ich habe unter "Projekt" --> "SpeichernTest-Eigenschaften" --> "Einstellungen" --> den Wert auf -1 gestellt und anschließend neukompilliert. Wenn ich es dann starte bekomm ich jedoch nicht die Auswahl. Das heisst es ist noch immer irgendwo gespeichert die Auswahl.
    Versuche nicht, die Einstellung per VisualStudio zu ändern - da musst du in iwelchen komischen Dateien rumfuhrwerken, im glaub Roaming-Bereich.

    Wie gesagt: Code einfach etwas an dein Programm dran, mit dem du die Einstellungen bearbeiten kannst.

    zauber777 schrieb:

    ...bzw. über ein Toolstrip-Menu mal wieder zu der Abfrage kommt. Dies bekomme ich auch hin.
    Ja - mach das und gut.
    Musst du eh machen, oder soll der User dein Prog deinstallieren müssen, wenner sich eingangs dummerweise verklickst hat?
    Nun habe ich es ja aber schon einmal geändert und wenn ich es nun starte öffnet sich nicht das Fenster wie es soll. Daher müsste ich es ja jetzt irgendwie wieder zurücksetzen bzw. könnte auch einen Button machen, der die Einstellung löscht/zurücksetzt. Diesen Befehl suche ich!? Also sowas wie "ListBox1.DataBindings.Remove()"
    unfug!
    Einstellung ist deutsch, und heißt auf englisch: "Setting" Ein Setting kannst du nicht löschen, das ist ja im VS eingerichtet.
    Du kannst den Wert des Settings setzen - was zum Kuckuck ist das Problem?

    VB.NET-Quellcode

    1. my.Settings.Einstellung = -1
    sry, ich werd bisserl genervt, wenn ich selbst solche ober-Trivialitäten vorkauen muss.

    (und hofflich habich ühaupt das "Problem" recht verstanden)

    zauber777 schrieb:

    es wird nicht zurück gesetzt
    Was machst Du im Code und beim Testen unmittelbar nach dem Zurücksetzen der Werte?
    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!
    Nun ist es knapp 4 Jahre her und trotzdem habe ich eine Frage zu diesem Thema. Daher hoffe ich dass es ok ist, wenn ich auch in diesem Thread schreibe und nicht in einem neuen.

    Ich versuche aktuell die gespeicherte Einstellung, von den zuvor ausgewählten+gespeicherten der ListBox, wieder anzuzeigen in der...
    Mein Versuch ist folgender :

    VB.NET-Quellcode

    1. If My.Settings.Einstellung = 0 Then
    2. ListBox1.SelectedIndex = 1
    3. ElseIf My.Settings.Einstellung = 1 Then
    4. ListBox1.SelectedIndex = 2
    5. ElseIf My.Settings.Einstellung = 2 Then
    6. ListBox1.SelectedIndex = 3
    7. End If

    Es wird mir auch kein Fehler angezeigt, aber wenn ich mein Programm starte und es auslese, stürzt es ab und meldet : "InvalidArgument=Value mit dem Wert 3 ist fpr Selected ungültig"

    Nun verstehe ich aber nicht, wie ich es sonst auslesen und anzeigen sollte...
    nein - wenn der Compiler "SelectedIndex" meint, dann schreibt er auch "SelectedIndex".


    zauber777 schrieb:

    Es wird mir auch kein Fehler angezeigt, aber wenn ich mein Programm starte und es auslese, stürzt es ab und.../quote]Du könntest versuchen, die Initialisierung des Forms aussem FormLoad() herauszunehmen und ins Form_Shown - Event zu verlagern.
    Im _Shown() - Event ists zwar unperformanter, aber dafür erhälst du eine vernünftige Fehlerbehandlung, die dir auch die genau Fehlerzeile anzeigt.
    Zwei Grundsatzfragen @zauber777: wieviele Einträge hat denn die ListBox? Und wie bekommt man den Wert des 1. ListBox-Eintrag?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.