Performclick der Ausdruck ergibt keinen Wert
- VB.NET
- .NET (FX) 4.5–4.8
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 29 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.
-
-
Programmier-Grundlage verstehen, was ein Ausdruck ist, und dann auch, was ein Ausdruck ist, der keinen Wert ergibt.
Grundlagen: Fachbegriffe
Welchen Datentyp hat das Objekt?
Weil das If braucht ja einen Boolean, um zu verzweigen - welchen Datentyp aber hatButton4.PerformClick()
? -
Visual_Prog schrieb:
Fehler
Beschreibe was das tun soll und wir machen das richtig.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! -
Ziel ist es, einen virtuellen Buttonclick zu erzeugen. Also innerhalb eines normalen Buttonclicks einen neuen Buttonclick zu generieren.
Das virtuelles Buttonclick soll dann
zum laufen bringen -
einen ButtonClick kann nur der Maustreiber des Systems generieren.
Oder definiere "ButtonClick".
Noch besser: Beschreibe das Ziel des ganzen, unter Verwendung klar definierter Fachworte, wie: Event, Methode, aufrufen, Befehl, ausführen, etc.
Verwende keine undefinierten Begriffe wie "ButtonClick", "virtueller ButtonClick", "neuer ButtonClick", "normaler ButtonClick", sowie "zum Laufen bringen".
System.IO.File.WriteAllLines()
ist nichts, was man zum Laufen bringt, sondern das kann man aufrufen, nämlich weils eine Methode ist. -
Okay also das von vorhin hat sich sogar geklärt, nun habe ich aber grade folgendes Problem:
Es ist ein Label vorhanden mit dem Text "Uebersicht". Der Text dieses labels ändert sich jedoch ständig.
Nun möchte ich den Text des labels jedes mal bei einer änderung in einer list of string speichern.
etwa so :
Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „Visual_Prog“ ()
-
Bis zum Zufügen eines Listbox-Items kann ich folgen, aber dann kommen wieder Worte, die in meiner Welt keinen Sinn ergeben.
Was bedeutet "das hinzugefuegte Item soll in dieser Datei überschreibend und variable(entsprechend den label1.text)gespeichert werden" ?
Deine Code-Schnipsel sagen mir auch nix - steht das in irgendeiner Methode, wie heißt die, und was soll die tun?
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()
-
-
Visual_Prog schrieb:
Nun möchte ich den Text des labels jedes mal bei einer änderung in einer list of string speichern.
Ändere nicht den Text selbst, sondern den Wert einer Property, in der Du das Label updatest und Deine List befüllst.
Feddich.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! -
Okay vielen Dank soweit. Hintergrund der Frage ist, ich habe eine ListBox mit einem schriftlichen Titel (Label).
Wenn ich ein Listboxitem clicke, wird die ListBox gecleared und der labeltext ändert sich in den Namen des angeklickten Items.
Nun suche ich einen Weg, wie ich mit einem "Zurück-Button" das vorherige Menü der ListBox laden kann.
Es kann nämlich sein, dass ich vom ersten Listbox-Menü ins zweite schwirre und dann vom zweiten ins dritte.
Ich hoffe das war verständlich erklärt, sonst bitte fragen : /
Meine Idee war gewesen, diese "Menü" Änderung durch die Änderung der labeltexte zu kennzeichnen.
Das heißt die Labeltexte in einer list of string zu speichern und jedem hinzugekommenen eintrag in der List in eine zahl also integer zu übersetzen.
Dadurch dass dann der Verlauf in Zahlen gespeichert ist, könnte ich dann dem Button signalisieren, immer erst die listbox der vorherigen zahl zu laden.
Nur weiss ich nicht ob ich das hier gut formuliert habe und ob das so umsetzbar ist oder evtl auf anderer Weise..
-
nun stelle ich mir etwas vor wie eine "BreadCrumb-Navigation".
Der WinExplorer hat sowas, wenn man sich links den Treeview wegdenkt, und rechts das Listview als deine Listbox ansieht.
Und oben ist ja die "BreadCrumb" - die Zeile, die den Pfad zum aktuell angezeigten Ordner angibt.
Und mit dieser Zeile kann man auch zurück-navigieren in dem aktuellen Ordner übergeordnete Ordner.
Aber die BreadCrumb-Zeile ist kein Label, sondern eher eine Liste mit Buttons.
Könnte man auch als dynamisches Menü umsetzen, oder als LinkLabel - jdfs nicht ein normales Label.
Also dassis jetzt nur ein Interpretations-Versuch deiner Aussagen, der mir iwie Sinn ergäbe - keine Ahnung, inwieweit das trifft, was du meinst. -
Visual_Prog schrieb:
Nun suche ich einen Weg ...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! -
@Erfinderdes Rades ja genauu das meine ich.
Soo also ich habe das jetzt so gelöst, dass ich einfach 5 Label erstellt habe.
Jede ListBox "Dimension" wurde einfach durch die Label.Text der 5 verschiedenen Label definiert.
Also z.b. die erste ListBoxseite:
-ich clicke auf die listBox.selecteditem und dadurch ändert sich Label2
-für die zweite habe ich dann:
Für die fünfte schließlich:
Frage wäre jetzt z.B., wie man z.b. so etwas für unendlich viele "ListBoxDimensionen" programieren könnte, da ich mir für diese fünf Dimensionen nun schon die finger Wund schreiben musste
@RoadFromGermany werde es evtl. ausführlicher Erläutern, aber im Kurzform geht es um eine Art Navigator.
Es lässt sich ein wenig mit dem Windows Navigator vergleichen.
Nur wenn du z.b. einen item im Treeview clickst, wird das neue Menue im Treeview selbst geladen. Es werden nur txt Dateien gehandelt. Auf der rechten Seiten hast du dann eine TextBox, die den text des selektierten Items anzeigt. Im treeview soll es möglich sein, neue ListBoxitems hinzuzufügen. Diese sind dann beim doppeltclicken entsprechend selbst neue Listübersichten.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Visual_Prog“ ()
-
Visual_Prog schrieb:
Nimm nicht den Text-Inhalt von Controls, um Deine Zustände zu speichern.
Ändere den Inhalt von Zustandsvariablen und gib dementsprechende Texte in Deinen Controls aus.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! -
Visual_Prog schrieb:
Frage wäre jetzt z.B., wie man z.b. so etwas für unendlich viele "ListBoxDimensionen" programieren könnte, da ich mir für diese fünf Dimensionen nun schon die finger Wund schreiben musste
Das einfachste wäre sowas:
Davon müsstest du eine Liste anlegen, und in den Childs ebenfalls Nodes einfüllen und soweiter.
Weil solange du keine Datenbestand hast, der baumartig strukturiert ist, solange kannst du auch keine Navigation durch einen baumartigen Datenbestand entwickeln.
-
Also ich stelle da Programmchen mal vor, falls das jemandem interessiert und auch in der Hoffnung, die eine oder andere Kleinigkeit noch zu verbessern. Mit diesen Programmchen habt ihr eine Navigationsleiste, mit der Ihr beliebig txt Einträge erstellen, umschreiben und lesen könnt.
UNter dem Code ist die Benutzeroberfläche als Bild zu finden.
Links ist die ListBox als treeview und Rechts die TextBox, diedie Texte anzeigt. Zur ListBox können Dateien hinzugefügt und entfernt werden.
Es gibt einen SpeicherPfad für die ListBoxen und einen für die TextBoxtexte.
@ErfinderDesRades + RoadFromGermany: das was ich im obigen Post meinte und was mit Node gelöst werden soll steht bei zeile 46 - 61 sowie 121-129
Code:
VB.NET-Quellcode
- Public Class Form1
- 'Übersicht der Lb Laden
- Private Sub Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- If System.IO.File.Exists("C:\xxx\LBoxen\Uebersicht.txt") Then
- ListBox1.Items.AddRange(System.IO.File.ReadAllLines("C:\xxx\LBoxen\Uebersicht.txt"))
- Else
- MessageBox.Show("Datei nicht vorhanden", "Wo ist die Datei??")
- End If
- End Sub
- Private Sub Add_Click(sender As Object, e As EventArgs) Handles Button1.Click
- Dim list_ As New List(Of String)
- Dim leerelist As New List(Of String)
- Dim LSi As String = Label1.Text
- Dim LSa As String = Label2.Text
- Dim LSe As String = Label3.Text
- Dim LSo As String = Label4.Text
- Dim LSu As String = Label5.Text
- Dim PfadLB As String = "C:\xxx\Uebersicht\LBoxen\"
- Dim combinedPathLB = IO.Path.Combine(PfadLB, String.Concat(LSi, ".txt"))
- Dim combinedPathLB1 = IO.Path.Combine(PfadLB, String.Concat(LSa, ".txt"))
- Dim combinedPathLB2 = IO.Path.Combine(PfadLB, String.Concat(LSe, ".txt"))
- Dim combinedPathLB3 = IO.Path.Combine(PfadLB, String.Concat(LSo, ".txt"))
- Dim combinedPathLB4 = IO.Path.Combine(PfadLB, String.Concat(LSu, ".txt"))
- Dim lsee As String = TextBox1.Text
- Dim Pfadneu As String = "C:\xxx\Uebersicht\LBoxen\"
- Dim combinedPathneu = IO.Path.Combine(Pfadneu, String.Concat(lsee, ".txt"))
- Dim list_2 As New List(Of String)
- Dim leer As String = ""
- list_2.Add(leer)
- ListBox1.Items.Add(TextBox1.Text) ' is klar
- list_.Clear() 'List clearen wegen Speicherprobleme hinterher
- For i = 0 To ListBox1.Items.Count - 1
- list_.Add(CStr(ListBox1.Items(i))) 'List auffüllen mit LB.Items
- Next
- If Label1.Text = "Uebersicht" And Label2.Text = "Label2" And Label3.Text = "Label3" And Label4.Text = "Label4" And Label5.Text = "Label5" Then
- System.IO.File.WriteAllLines(combinedPathLB, list_, New System.Text.UnicodeEncoding()) 'neuer Eintrag in die geklickte datei speichern schreiben
- ElseIf Label1.Text = "Uebersicht" And Label3.Text = "Label3" And Label4.Text = "Label4" And Label5.Text = "Label5" Then
- System.IO.File.WriteAllLines(combinedPathLB1, list_, New System.Text.UnicodeEncoding())
- ElseIf Label1.Text = "Uebersicht" And Not Label2.Text = "Label2" And Label4.Text = "Label4" And Label5.Text = "Label5" Then
- System.IO.File.WriteAllLines(combinedPathLB2, list_, New System.Text.UnicodeEncoding())
- ElseIf Label1.Text = "Uebersicht" And Not Label2.Text = "Label2" And Not Label3.Text = "Label3" And Label5.Text = "Label5" Then
- System.IO.File.WriteAllLines(combinedPathLB3, list_, New System.Text.UnicodeEncoding())
- ElseIf Label1.Text = "Uebersicht" And Not Label2.Text = "Label2" And Not Label3.Text = "Label3" And Not Label4.Text = "Label4" Then
- System.IO.File.WriteAllLines(combinedPathLB4, list_2, New System.Text.UnicodeEncoding())
- End If
- System.IO.File.WriteAllText(combinedPathneu, "", New System.Text.UnicodeEncoding()) ' neuen Eintrag als eigene LB Speichern
- TextBox1.Text = ""
- End Sub
- Private Sub Zurueck_Click(sender As Object, e As EventArgs) Handles Button3.Click
- Dim list_ As New List(Of String)
- Dim LSi As String = Label1.Text
- Dim Pfad As String = "xxx\Uebersicht\LBoxen\"
- Dim combinedPath = IO.Path.Combine(Pfad, String.Concat(LSi, ".txt"))
- Label1.Text = "Uebersicht"
- Label2.Text = "Label2"
- Label3.Text = "Label3"
- Label4.Text = "Label4"
- Label5.Text = "Label5"
- Label2.Visible = False
- Label3.Visible = False
- Label4.Visible = False
- Label5.Visible = False
- Button3.Visible = False
- ListBox1.Items.Clear()
- list_.Clear()
- ListBox1.Items.AddRange(System.IO.File.ReadAllLines("xxx\Uebersicht\LBoxen\" & LSi & ".txt"))
- End Sub
- Private Sub Save_Click(sender As Object, e As EventArgs) Handles Button2.Click
- Dim list_ As New List(Of String)
- Dim LSI As String = ListBox1.SelectedItem
- Dim Pfad As String = "C:\xxx\Uebersicht\"
- Dim combinedPath = IO.Path.Combine(Pfad, String.Concat(LSI, ".txt"))
- Dim TB2 As String = TextBox2.Text
- System.IO.File.WriteAllText(combinedPath, TB2, New System.Text.UnicodeEncoding())
- End Sub
- Private Sub ListBox1_Click(sender As Object, e As EventArgs) Handles ListBox1.Click
- TextBox2.Visible = True
- End Sub
- Private Sub ListBox1_DoubleClick(sender As Object, e As EventArgs) Handles ListBox1.DoubleClick
- Dim minivariable As String = ListBox1.SelectedItem()
- 'Labels verschoenern
- If Label2.Text = "Label2" Then
- Label2.Visible = True
- ElseIf Label3.Text = "Label3" Then
- Label3.Visible = True
- ElseIf Label4.Text = "Label4" Then
- Label4.Visible = True
- ElseIf Label5.Text = "Label5" Then
- Label5.Visible = True
- End If
- If Label1.Text = "Uebersicht" And Label2.Text = "Label2" And Label3.Text = "Label3" And Label4.Text = "Label4" And Label5.Text = "Label5" Then
- Label2.Text = minivariable
- ElseIf Label1.Text = "Uebersicht" And Not Label2.Text = "Label2" And Label3.Text = "Label3" And Label4.Text = "Label4" And Label5.Text = "Label5" Then
- Label3.Text = minivariable
- ElseIf Label1.Text = "Uebersicht" And Not Label2.Text = "Label2" And Not Label3.Text = "Label3" And Label4.Text = "Label4" And Label5.Text = "Label5" Then
- Label4.Text = minivariable
- ElseIf Label1.Text = "Uebersicht" And Not Label2.Text = "Label2" And Not Label3.Text = "Label3" And Not Label4.Text = "Label4" And Label5.Text = "Label5" Then
- Label5.Text = minivariable
- End If
- ListBox1.Items.Clear()
- Button3.Visible = True
- TextBox2.Visible = True
- ListBox1.Items.AddRange(System.IO.File.ReadAllLines("C:\xxx\Uebersicht\LBoxen\" & minivariable & ".txt"))
- 'ListBoxEintrag von der ListBox UND System entfernen
- Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
- Dim lsi As String = ListBox1.SelectedItem
- Dim Pfad As String = "C:\xxx\Uebersicht\LBoxen\"
- Dim combinedPath = IO.Path.Combine(Pfad, String.Concat(lsi, ".txt"))
- Dim lse As String = ListBox1.SelectedItem
- Dim Pfat As String = "C:\xxx\Uebersicht\"
- Dim combinedPath2 = System.IO.Path.Combine(Pfat, String.Concat(lse, ".txt"))
- Select Case MsgBox("Soll die Datei " & lsi & " wirklich gelöscht werden?", MsgBoxStyle.YesNo, "Meldung")
- Case MsgBoxResult.Yes
- System.IO.File.Delete(combinedPath)
- System.IO.File.Delete(combinedPath2)
- ListBox1.Items.Remove(ListBox1.SelectedItem())
- Case MsgBoxResult.No
- End Select
- End Sub
- End Class
Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Visual_Prog“ ()
-
Visual_Prog schrieb:
RoadFromGermany
Verstehe zunächstRodFromGermany schrieb:
Trenen Daten und GUI.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! -
@RodFromGermany : D
Trenen Daten und GUI: Ich Tippe jetzt mal darauf, du meinst ich soll Aenderungen im Code nicht von Steuerelementen aus der benutzeroberfläche abhängig machen? So gesehen muesste ich mir ein neues System ausdenken, z.b. Node, was ich aber noch nicht ausreichend kenne : /
Zu Zustaende geschweige Zustaende speichern habe ich leider nichts gefunden. Hat das irgendwas mit Boolean zu tun? sonst tippe ich da leider auch im dunkeln.
Entsprechend weiss ich auch nicht, wie man eine zustandsvariable definiert ; /
Gruss
-
Visual_Prog schrieb:
Hat das irgendwas mit Boolean zu tun?Boolean
.Visual_Prog schrieb:
Dort musst Du entsprechende Variablen generieren.
Das sieht eher nach einem Enum aus, äquivalent wäre eineComboBox
, eineEins von N
-Auswahl.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! -
@ ErfinderDesRades:
kann ich den Code denn erstmal so uebernehmen?
die List of Node befuellen:
Childs.add() ???
Und kann ich den obigen Code einfach so im anderen Code einsetzen?
Ich weiss da grad nicht weiter : /
-
Ähnliche Themen
-
TheKeram007 - - Sonstige Problemstellungen
-
Windoof Vista - - Sonstige Problemstellungen
-
3 Benutzer haben hier geschrieben
- Visual_Prog (13)
- ErfinderDesRades (10)
- RodFromGermany (7)