Mehrfaches bearbeiten der Checkbox einträge
- 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 48 Antworten in diesem Thema. Der letzte Beitrag () ist von TheDoctorWho.
-
-
VB.NET-Quellcode
- Dim CheckBoxArray() = {CheckBox1, CheckBox2, CheckBox3, CheckBox4, CheckBox5, CheckBox6, CheckBox7, CheckBox8, CheckBox9, CheckBox10, CheckBox11}
- Dim Zähler As Integer = -1
- Using Sr As New IO.StreamReader("prglst.mcs")
- Dim Lines = Sr.ReadToEnd.Split({Environment.NewLine}, StringSplitOptions.None)
- For Each Line In Lines
- Zähler = Zähler + 1
- Dim Part() = Line.Split(New String() {";"}, StringSplitOptions.RemoveEmptyEntries)
- CheckBoxArray(Zähler).Text = Part(0)
- Next
- Sr.Close()
- End Using
So sieht nun mein funktionierenes Script aus
Das was jetzt noch ist , das ich 11 Checkboxes von (1-11) habe , und meine liste hat 11 Zeilen.
Aber es wird mir ein zeilen überlauf angezeigt
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TheDoctorWho“ ()
-
Setz doch mal eine BreakPoint bei Zeile 7 und schau nach, ob du tatsächlich nur 11 Zeilen einliest. Wenn du den Cursor über Lines bewegst, dann siehst du ja wieviele Zeilen enthalten sind. Vermutlich liest er am Ende der Datei noch eine leere Zeile ein weil du einen Zielenumbruch am Ende von Zeile 11 hast. Das wäre die häufigste Fehlerursache. Alternativ kannst du das natürlich auch begrenzen indem du Zeile 9 in eine If-Klausel setzt.
Ein Computer wird das tun, was du programmierst - nicht das, was du willst. -
@TheDoctorWho: Glückwunsch! Sieht so aus, als hättest du dein Problem auch ohne unsere Hilfe lösen können.
Wo man die Lösung sieht, kann man auch erkennen, was du eiglich wolltest.
Der Grund, warum wir nichts beitragen konnten, war: du konntest dein Problem garnicht formulieren.
Und wir konnten dir auch nicht helfen, es klar zu formulieren, und ich verkneife es mir auch jetzt, es einfach vorzusagen.
Könntest du jetzt - im Nachhinein - sagen, was das Problem war, was du gelöst hast? -
Ihr habt mir schon geholfen, auch wenn ihr am Thema vorbei geredet hattet was wohl ein stück an mir lag.
Das Problem war das aud einer datei informationen in als Text in mehrere Checkboxen eingelesen werden sollte
dazu der zweite teil als Globale variable
Aber ich habe es verstanden nun die nächste dazu passende frage
wie kann ich DIM Checkboxarray .... als globale variable setzen ohne es als read olny zu machen ?
bzw den Array Checkboxarray(zähler) in anderen subrutienen zu nutzen
Beispiel:
VB.NET-Quellcode
- Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
- For Zähler = 0 To 11
- If checkboxarray(Zähler).checked = 0 Then
- End If
- WC.DownloadFileAsync(New Uri(Dat(Zähler)), "C:\softdown\" + String.Format(Zähler).exe) ' ich weis das diese zeile nicht funktioniert
- Next
- End Sub
Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „TheDoctorWho“ ()
-
Du lässt einfach das
ReadOnly
weg?
Was verstehst Du unter globale Variable? Wo soll dasCheckBoxArray
bekannt sein? Methodenweit? Form-klassenweit? Projektweit? Solutionweit? PC-weit? Netzwerkweit? Weltweit?
TheDoctorWho schrieb:
If checkboxarray(Zähler).checked = 0 ThenOption Strict On
-Anwalt!
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. -
Ich stell die Frage lieber vorab: Was verstehst du unter global?
Projektübergreifend, projektweit, klassenweit?
Edit: @VaporiZed war mal wieder schneller.
Ein Computer wird das tun, was du programmierst - nicht das, was du willst. -
Globale Variable sind für mich alle variabeln die man in Puplic Class Unterbringt:
z.B:
Dann lokale bzw private Variable die man in Private Sub unterbringt
z.B.
Die privaten Variable kann man nur in der Privaten Sub benutzen, soe wie ich es verstehe
die globalen sind SUB übergreiffend -
@TheDoctorWho Ich hab mir mal den Code aus Post #22 angesehen:
VB.NET-Quellcode
- Dim CheckBoxArray() = {CheckBox1, CheckBox2, CheckBox3, CheckBox4, CheckBox5, CheckBox6, CheckBox7, CheckBox8, CheckBox9, CheckBox10, CheckBox11}
- Dim lines() = System.IO.File.ReadAllLines("prglst.mcs")
- For Zähler = 0 To Math.Min(CheckBoxArray.Length, lines.Length) - 1
- Dim Part() = Line.Split(New String() {";"}, StringSplitOptions.RemoveEmptyEntries)
- CheckBoxArray(Zähler).Text = Part(0)
- Next
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! -
@TheDoctorWho
wäre eine Checkedlistbox nicht eine bessere Wahl?
hier ein Bsp.
VB.NET-Quellcode
- Option Strict On
- Imports System.IO
- Public Class Form1
- Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
- SaveData("D:\TestFolder\TestSave.txt", CheckedListBox1)
- End Sub
- Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
- CheckedListBox1.CheckOnClick = True
- 'Beispiel(Daten)
- For i = 8 To 17
- CheckedListBox1.Items.Add(Format(i, "00") & ":00")
- CheckedListBox1.Items.Add(Format(i, "00") & ":30")
- Next
- End Sub
- Public Sub SaveData(ByVal FileName As String, ByVal CListBox As CheckedListBox)
- Dim sb As New System.Text.StringBuilder
- For Index As Integer = 0 To CListBox.Items.Count - 1
- sb.AppendLine(String.Format("{0},{1}",
- If(CListBox.GetItemChecked(Index), True, False), CListBox.Items(Index)))
- Next
- IO.File.WriteAllText(FileName, sb.ToString)
- End Sub
- End Class
-
@Kasi
Die Idee mit der Listbox hatte ich auch, aber für den gesamt Zusammenhang des Programms , ist es nicht wirklich nützlich
da noch Progressbar's benutzt werden sollen die entsprechend den Status anzeigen swollen wie weit das einzelne Programm eingerichtet ist .
Vieleicht ist es besser ich zeig den gesamt Script
VB.NET-Quellcode
- Option Strict On
- Imports System.Net
- Public Class Form1
- Dim Datei() As String
- Dim WithEvents WC As WebClient = New WebClient()
- Private Sub FrmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- Dim CheckBoxArray() = {CheckBox1, CheckBox2, CheckBox3, CheckBox4, CheckBox5, CheckBox6, CheckBox7, CheckBox8, CheckBox9, CheckBox10, CheckBox11}
- Dim Zähler As Integer = -1
- Using Sr As New IO.StreamReader("prglst.mcs")
- Dim Lines = Sr.ReadToEnd.Split({Environment.NewLine}, StringSplitOptions.None)
- For Each Line In Lines
- Zähler = Zähler + 1
- Dim Part() = Line.Split(New String() {";"}, StringSplitOptions.RemoveEmptyEntries)
- If Zähler < 11 Then
- CheckBoxArray(Zähler).Text = Part(0)
- End If
- Next
- Sr.Close()
- End Using
- AddHandler WC.DownloadProgressChanged, AddressOf WC_DownloadProgressChanged
- AddHandler WC.DownloadFileCompleted, AddressOf WC_DownloadFileCompleted
- End Sub
- Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
- For Zähler = 0 To 11
- 'If checkboxarray(Zähler).checked = 0 Then
- 'End If
- ' WC.DownloadFileAsync(New Uri(Dat(Zähler)), "C:\softdown\" + String.Format(Zähler))
- Next
- End Sub
- Private Sub WC_DownloadProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles WC.DownloadProgressChanged
- ProgressBar2.Value = e.ProgressPercentage
- End Sub
- Private Sub WC_DownloadFileCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) Handles WC.DownloadFileCompleted
- MsgBox("beendet", MsgBoxStyle.OkOnly)
- End Sub
- End Class
Wie man sieht bin ich gerade an Private Sub button2 beschäftigtz da die Download routine durchgeführt wird wenn die checkboxes aktiviert sind
-
Ich hoffe ja, wenn ich das richtig deute, das du bevor du die heruntergeladenen Setups oder Programme ausführt du überprüfst ob du da auch wirklich die richtigen Dateien hast.
Nicht das da mal ein Server gehackt wird und die Viren ausführst. -
-
Ich würde gern das thema mit meiner letzten Frage abschliessen
Mein letztes problem ist das ich die Checkboxarray innerhalb einer SUB benutzen kann , doch die Nutzung bei anderen Subs soll ich es neu deklaieren.
zur veranschauung:
VB.NET-Quellcode
- Private Sub FrmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- Dim CheckBoxArray() = {CheckBox1, CheckBox2, CheckBox3, CheckBox4, CheckBox5, CheckBox6, CheckBox7, CheckBox8, CheckBox9, CheckBox10, CheckBox11}
- Dim Zähler As Integer = -1
- Using Sr As New IO.StreamReader("prglst.mcs")
- Dim Lines = Sr.ReadToEnd.Split({Environment.NewLine}, StringSplitOptions.None)
- For Each Line In Lines
- Zähler = Zähler + 1
- Dim Part() = Line.Split(New String() {";"}, StringSplitOptions.RemoveEmptyEntries)
- If Zähler < 11 Then
- CheckBoxArray(Zähler).Text = Part(0)
- End If
wenn ich es den Checkboxarray in der class deklarien will so geht es nicht. Dort kann ich es nur als read olny machen ?
also wie kann ich es den chackbox in mehren SUB's anwenden ?
zb. um es später zu sehen welchen angehackt wurde und welches nicht ?
Das gleiche mit dem Array Part()
-
@TheDoctorWho Ganz einfach, probierma:
VB.NET-Quellcode
- Private CheckBoxArray() As CheckBox
- Private Sub FrmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- CheckBoxArray = New CheckBox() {CheckBox1, CheckBox2, CheckBox3, CheckBox4, CheckBox5, CheckBox6, CheckBox7, CheckBox8, CheckBox9, CheckBox10, CheckBox11}
- ' ...
- End Sub
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! -
VB.NET-Quellcode
- Private Sub FrmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- Checkboxarray = New CheckBox {CheckBox1, CheckBox2, CheckBox3, CheckBox4, CheckBox5, CheckBox6, CheckBox7, CheckBox8, CheckBox9, CheckBox10, CheckBox11}
- Dim Zähler As Integer = -1
- Using Sr As New IO.StreamReader("prglst.mcs")
- Dim Lines = Sr.ReadToEnd.Split({Environment.NewLine}, StringSplitOptions.None)
- For Each Line In Lines
- Zähler = Zähler + 1
- Datei = Line.Split(New String() {";"}, StringSplitOptions.RemoveEmptyEntries)
- If Zähler < 11 Then
- Checkboxarray(Zähler).Text = Part(0)
- End If
- Next
- Sr.Close()
- End Using
Nun meldet der mir bei Zeile 10 ein Fehler,
Die Klasse Checkbox kann nicht idenziert werden, da sie keine Standarteigenschaft hat
-
TheDoctorWho schrieb:
Checkboxarray = New CheckBox {CheckBox1, CheckBox2, CheckBox3, CheckBox4, CheckBox5, CheckBox6, CheckBox7, CheckBox8, CheckBox9, CheckBox10, CheckBox11}
Das ist doch totaler Blödsinn. Das kompiliert doch gar nicht. Und ist auch anders, als RfG in Post#35 geschrieben hat. Solange wir es mit unechtem Code zu tun haben, ist es ein Ding der Unmöglichkeit, hier vernünftig zu helfen.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. -
VB.NET-Quellcode
- Public Class Form1
- Dim WithEvents WC As WebClient = New WebClient()
- Dim zähler As Integer
- Private CheckBoxArray(zähler) As CheckBox
- Private Datei() As String
- Private Sub FrmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- CheckBoxArray = New CheckBox() {CheckBox1, CheckBox2, CheckBox3, CheckBox4, CheckBox5, CheckBox6, CheckBox7, CheckBox8, CheckBox9, CheckBox10, CheckBox11}
- zähler = -1
- Using Sr As New IO.StreamReader("prglst.mcs")
- Dim Lines = Sr.ReadToEnd.Split({Environment.NewLine}, StringSplitOptions.None)
- For Each Line In Lines
- zähler = zähler + 1
- Dim part() = Line.Split(New String() {";"}, StringSplitOptions.RemoveEmptyEntries)
- If zähler < 11 Then
- CheckBoxArray(zähler).Text = part(0)
- Datei(zähler) = part(1)
- End If
- Next
- Sr.Close()
- End Using
- AddHandler WC.DownloadProgressChanged, AddressOf WC_DownloadProgressChanged
- AddHandler WC.DownloadFileCompleted, AddressOf WC_DownloadFileCompleted
- End Sub
- Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
- For Zähler = 0 To 11
- If CheckBoxArray(zähler).Checked = True Then
- End If
- 'WC.DownloadFileAsync(New Uri(Dat(Zähler)), "C:\softdown\" + String.Format(Zähler))
- Next
- End Sub
- Private Sub WC_DownloadProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles WC.DownloadProgressChanged
- ProgressBar2.Value = e.ProgressPercentage
- End Sub
- Private Sub WC_DownloadFileCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) Handles WC.DownloadFileCompleted
- MsgBox("beendet", MsgBoxStyle.OkOnly)
- End Sub
- End Class
So sieht momentan der gesamt code aus.
Warum sollte der unecht sein ? Der ist alles andere als Professionel , ja ok aber nicht unecht
Mometan hab ich aber eine andere meldung bekommen wenn ich das Programm ausführen möchte , die ich merkwürdig finde
For Each Line In Lines
Mitlerweile weis ich dases an diesen Befehl liegt Datei(zähler) = part(1)
Das endif wird beim aufrufen als fehler angezeigt , mit der meldung Der Objektverweis wurde nicht auf eine Objektistanz zugewiesen
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TheDoctorWho“ ()
-
VaporiZed schrieb:
Das ist doch totaler Blödsinn. Das kompiliert doch gar nicht.
Der Fehler bezieht sich aufPart
.
Leider ist @TheDoctorWho nicht in der Lage, seinen eigenen Code abzuschreiben:
Spoiler anzeigen VB.NET-Quellcode
- Private CheckBoxArray() As CheckBox
- Private Sub FrmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- CheckBoxArray = New CheckBox() {CheckBox1, CheckBox2, CheckBox3, CheckBox4, CheckBox5, CheckBox6, CheckBox7, CheckBox8, CheckBox9, CheckBox10, CheckBox11}
- Dim Zähler As Integer = -1
- Using Sr As New IO.StreamReader("prglst.mcs")
- Dim Lines = Sr.ReadToEnd.Split({Environment.NewLine}, StringSplitOptions.None)
- For Each Line In Lines
- Zähler = Zähler + 1
- Dim Part = Line.Split(New String() {";"}, StringSplitOptions.RemoveEmptyEntries) ' das hier
- If Zähler < 11 Then
- CheckBoxArray(Zähler).Text = Part(0)
- End If
- Next
- Sr.Close()
- End Using
- End Sub
@TheDoctorWho Und ? Hast Du Deinen Fehler gefunden?
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 schrieb:
Bei mir schon ...Checkboxarray = New CheckBox {...}
, Post#36) und einem CheckBox-Array (Checkboxarray = New CheckBox () {...}
, entsprechend Deinem Post) besteht ziemlich sicher auch bei Deiner VS-Version ein Unterschied.
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.
-
Tags
-
Ähnliche Themen
-
Daniel Baumert - - Sonstige Problemstellungen
-
7 Benutzer haben hier geschrieben
- TheDoctorWho (19)
- RodFromGermany (10)
- VaporiZed (6)
- ErfinderDesRades (6)
- Yanbel (5)
- Kasi (2)
- xChRoNiKx (1)