tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von Masterclavat
  • 1 Beitrag von Nico Graichen
ERLEDIGT
JA
ANTWORTEN
13
ZUGRIFFE
1164
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Macewind Macewind ist offline Rookie
    Registriert seit
    Jul 2009
    Beiträge
    9
    Hallo ich bin neu hier im Forum und habe gleich mal eine Frage:

    Problem:
    Ich arbeite mit Microsoft Visual Studio 2005 und will den Inhalt von Checkboxen abfragen leider gibt es davon einige und ich habe mich gefragt ob es möglich ist das ganze mit einer Variable zu versehen und in eine Schleife zu packen:

    Mein Code:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    zlesen(key)(25) = CInt(Form1.S_25.Checked)
    zlesen(key)(25) = zlesen(key)(25).Replace("-", "")
     
    zlesen(key)(26) = CInt(Form1.S_26.Checked)
    zlesen(key)(26) = zlesen(key)(26).Replace("-", "")
     
    zlesen(key)(27) = CInt(Form1.S_27.Checked)
    zlesen(key)(27) = zlesen(key)(27).Replace("-", "")
     
    zlesen(key)(28) = CInt(Form1.S_28.Checked)
    zlesen(key)(28) = zlesen(key)(28).Replace("-", "")
     
    usw.

    Also zb.: bei Form1.S_25.Checked nicht eine 25 sondern ein Form1.S_[i].Checked.

    Sowas in der Art:
    Code :
    1
    2
    3
    4
    
    for i = 25 to 56
    zlesen(key)(i) = CInt(Form1.S_[i].Checked)
    zlesen(key)(i) = zlesen(key)(i).Replace("-", "")
    next

    Danke schon mal für die Hilfe.

    Macewind
     

  2. #2
    Masterclavat Masterclavat ist offline Mitglied Brokat
    Registriert seit
    Oct 2007
    Beiträge
    325
    Das ist möglich mit der Eigenschaft
    Code vbnet:
    1
    
    Controls.Item(Name)
    eines jeden System.Windows.Control.
     

  3. #3
    Macewind Macewind ist offline Rookie
    Registriert seit
    Jul 2009
    Beiträge
    9
    Du meinst so hier:

    Code :
    1
    2
    3
    4
    
    for i = 25 to 56
    zlesen(key)(i) = CInt(Form1.Controls.Item("S_"+cstr(i)).Checked)
    zlesen(key)(i) = zlesen(key)(i).Replace("-", "")
    next

    Leider geht das bei mir nicht Fehler:

    "Checked ist kein Member von System.Windows.Control"
     

  4. #4
    Steiner_B Steiner_B ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Ort
    Wien
    Beiträge
    573
    Aber System.Windows.Forms.CheckBox ist von Control abgeleitet, d.h. du musst das Item vorher in eine CheckBox konvertieren
     

  5. #5
    Macewind Macewind ist offline Rookie
    Registriert seit
    Jul 2009
    Beiträge
    9
    Zitat Zitat von Steiner_B Beitrag anzeigen
    Aber System.Windows.Forms.CheckBox ist von Control abgeleitet, d.h. du musst das Item vorher in eine CheckBox konvertieren
    Kannst du mir dazu ein Code zeigen / schreiben ?
     

  6. #6
    Steiner_B Steiner_B ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Ort
    Wien
    Beiträge
    573
    Keine Garantie über die genaue syntaktische Schreibweise, ich bin C# Programmierer. Die Logik dahinter ist auf jeden Fall richtig.

    Code vb:
    1
    2
    3
    4
    5
    6
    7
    
     
    for i = 25 to 56
       zlesen(key)(i) = CInt(
          (System.Windows.Form.CheckBox)(Form1.Controls.Item("S_"+cstr(i))).Checked
       )
       zlesen(key)(i) = zlesen(key)(i).Replace("-", "")
    next
     

  7. #7
    Masterclavat Masterclavat ist offline Mitglied Brokat
    Registriert seit
    Oct 2007
    Beiträge
    325
    Um den Code von Steiner_B zu berichtigen:

    Code vbnet:
    1
    2
    3
    4
    
    For i = 25 to 56
       zlesen(key)(i) = CInt(CType(Form1.Controls.Item("S_" & CStr(i)), System.Windows.Forms.CheckBox).Checked)
       zlesen(key)(i) = zlesen(key)(i).Replace("-", "")
    Next
    Geändert von Masterclavat (21.07.09 um 13:27 Uhr)
    Macewind bedankt sich. 

  8. #8
    Steiner_B Steiner_B ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Ort
    Wien
    Beiträge
    573
    hab ja gesagt das ich VB nicht wirklich kann
     

  9. #9
    Macewind Macewind ist offline Rookie
    Registriert seit
    Jul 2009
    Beiträge
    9
    Zitat Zitat von Masterclavat Beitrag anzeigen
    Um den Code von Steiner_B zu berichtigen:

    Code vbnet:
    1
    2
    3
    4
    
    For i = 25 to 56
       zlesen(key)(i) = CInt(CType(Form1.Controls.Item("S_" & CStr(i)), System.Windows.Forms.CheckBox).Checked)
       zlesen(key)(i) = zlesen(key)(i).Replace("-", "")
    Next
    bekomme dabei folgende Fehlermeldung:

    Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

    in der Zeile:

    Code vbnet:
    1
    
    zlesen(key)(i) = CInt(CType(Form1.Controls.Item("S_" & CStr(i)), System.Windows.Forms.CheckBox).Checked)

    Weil selbst wenn ich testweise gar keine Variable übergebe also:

    Code vbnet:
    1
    2
    3
    4
    
    For i = 25 to 56
       zlesen(1)(25) = CInt(CType(Form1.Controls.Item("S_25"), System.Windows.Forms.CheckBox).Checked)
       zlesen(1)(25) = zlesen(1)(25).Replace("-", "")
    Next

    kommt der gleiche Fehler wieder.

    Oder muss ich dabei noch was anderes beachten/umwandeln?
    Geändert von Macewind (21.07.09 um 14:51 Uhr) Grund: Fehler genauer beschreiben
     

  10. #10
    Avatar von Spyke
    Spyke Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    931
    Zitat Zitat von Macewind Beitrag anzeigen
    Oder muss ich dabei noch was anderes beachten/umwandeln?
    Prüfen ob du bei
    Code :
    1
    
    Form1.Controls.Item("S_" & CStr(i))
    überhaupt was zurück bekommst.
    und
    Code :
    1
    
    zlesen(key)(i)
    ebenfalls nicht null ist.
     
    www.iv-interactive.de - Projektewebsite
    WikiParser - aktuelles Projekt

  11. #11
    Steiner_B Steiner_B ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Ort
    Wien
    Beiträge
    573
    überprüf mal ob

    Code vb:
    1
    
    Form1.Controls.Item("S_25")

    ein gültiges Objekt zurückliefert
     

  12. #12
    Macewind Macewind ist offline Rookie
    Registriert seit
    Jul 2009
    Beiträge
    9
    Zitat Zitat von Steiner_B Beitrag anzeigen
    überprüf mal ob

    Code vb:
    1
    
    Form1.Controls.Item("S_25")

    ein gültiges Objekt zurückliefert
    Code vbnet:
    1
    
    Form1.Controls.Item("S_25")
    is bei mir Nothing und nicht von Typ CheckBox

    aber
    Code vbnet:
    1
    
    Form1.S_25.Checked
    is nicht Nothing und ist vom Typ CheckBox

    Geprüft habe ich das mit
    Code vbnet:
    1
    2
    3
    4
    5
    6
    7
    
    Public Shared Function test(ByVal objekt As Object) As Boolean
    If objekt Is Nothing Or Not TypeOf objekt is CheckBox Then
    Return False
    Else
    Return True
    End If
    End Function

    Kurz gesagt ich bin genau so weit wie vorher hoffe es kann mir da jemand weiterhelfen
     

  13. #13
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    Hi

    liegt die CheckBox in einem Container (GroupBox, ...)? Wenn ja musst du rekursiv suchen. Dazu kannst du die Find-Methode der ControlsCollection nutzen und für searchAllChildren true übergeben.
    Macewind bedankt sich. 
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  14. #14
    Macewind Macewind ist offline Rookie
    Registriert seit
    Jul 2009
    Beiträge
    9
    Zitat Zitat von Nico Graichen Beitrag anzeigen
    Hi

    liegt die CheckBox in einem Container (GroupBox, ...)? Wenn ja musst du rekursiv suchen. Dazu kannst du die Find-Methode der ControlsCollection nutzen und für searchAllChildren true übergeben.
    Ja die CheckBox liegt auf "Form1" in der GroupBox mit dem Namen "Zustand"

    Somit würde der neue Code lauten:
    Code vbnet:
    1
    
    CType(Form1.Zustand.Controls.Item("S_" & CStr(i)), System.Windows.Forms.CheckBox).Checked

    Damit hat es auch funktioniert danke habt mir sehr geholfen!
     

Ähnliche Themen

  1. Objektnamen aus Variablen zusammen setzen?!
    Von Blaubmania im Forum Visual Basic 6.0
    Antworten: 9
    Letzter Beitrag: 14.07.06, 15:59
  2. [JS] Wie kann ich PHP-Variablen in Javascript verwenden
    Von Sven Mintel im Forum Webmaster FAQ
    Antworten: 0
    Letzter Beitrag: 27.06.06, 04:26
  3. Variablen als Formbestandteile bezeichnen und verwenden
    Von weedo im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 24.01.06, 12:00
  4. Variablen aus einer Funktion verwenden ?
    Von saviour im Forum PHP
    Antworten: 5
    Letzter Beitrag: 10.06.05, 17:20
  5. Globales Verwenden von Variablen & TextBoxen u. ä.
    Von Neflite im Forum .NET Archiv
    Antworten: 9
    Letzter Beitrag: 15.01.04, 16:20

Stichworte