Controls über Schleife und über Variable ansprechen

  • VB.NET

Es gibt 28 Antworten in diesem Thema. Der letzte Beitrag () ist von Brave.

    Brave schrieb:

    ja ist sicher ...

    Hast Du denn wirklich(!) einmal den Code von xtts02 ausgeführt ? Wenn Du die Buttons dynamisch erzeugst, so bekommen sie nicht wie bei dem Designer automatisch auch einen Namen: dieser muss explizit vergeben werden. Gross-/Kleinschreibung ist beim Zugriff auf die Control Collection egal.

    Brave schrieb:

    das merkwürdige an der nummer ist ja, das es mit dem index funktioniert und wenn ich das control mit dem namen anspreche eben nicht

    Das ist auch der Grund, warum ich vermutete, dass die Controls mit falschen Namen angesprochen wurden.
    Wenn Du sicher bist, alles richtig angegeben zu haben, dann weiss ich momentan auch nicht weiter ...
    ja den code habe ich ausgeführt. im direkt fenster steht auch alles wie erwartet drin .... die richtigen controls in der richtigen tab usw.

    die controls sind im designer erzeugt worden d.h. es sollte alles i.O. sein?

    und wie gehabt: wenn ich den controls(index) verwende läufts, wenn ich controls("NameDesSteuerelemnts") verwend nicht.
    Nochmal, das hier läuft

    VB.NET-Quellcode

    1. dim txt as string =Me.TabControl1.TabPages(1).Controls(2).Text
    2. messagebox.show(text)


    und das hier nicht ?

    VB.NET-Quellcode

    1. dim txt as string =Me.TabControl1.TabPages(1).Controls("namedescontrols").Text
    2. messagebox.show(text)


    Das Casten mit DirectCast kannst Du in diesem Fall getrost weglassen, da alle Controls eine .Text Eigenschaft besitzen.
    Ich habe es eben nochmal zum Spass getestet..

    VB.NET-Quellcode

    1. Me.TabControl1.TabPages(0).Controls("Textbox5").Text = "TEST THIS"


    Das funktioniert ohne Probleme.
    Poste mal den Debug.Print Teil, der alle Controls + deren Namen auf der Tabpage ausliest.
    Das ist meine Signatur und sie wird wunderbar sein!

    Quellcode

    1. Dim i As Integer = 0
    2. For i = 0 To 6
    3. Me.TabControl1.TabPages(i).Controls(12).Text = myDataTable.Rows(i).Item(1).ToString
    4. Me.TabControl1.TabPages(i).Controls(11).Text = myDataTable.Rows(i).Item(2).ToString
    5. Me.TabControl1.TabPages(i).Controls(8).Text = DblToStr_min(myDataTable.Rows(i).Item(3).ToString, "min")
    6. Me.TabControl1.TabPages(i).Controls(7).Text = DblToStr_min(myDataTable.Rows(i).Item(4).ToString, "min")
    7. Me.TabControl1.TabPages(i).Controls(2).Text = myDataTable.Rows(i).Item(5).ToString & " Std"
    8. Next

    das läuft




    Quellcode

    1. Dim i As Integer = 0
    2. For i = 0 To 6
    3. Me.TabControl1.TabPages(i).Controls("cmd_ArbeitszeitBeginn" & i + 1).Text = myDataTable.Rows(i).Item(1).ToString
    4. Me.TabControl1.TabPages(i).Controls("cmd_ArbeitszeitEnde" & i + 1).Text = myDataTable.Rows(i).Item(2).ToString
    5. Me.TabControl1.TabPages(i).Controls("cmd_FrühstcksPause" & i + 1).Text = DblToStr_min(myDataTable.Rows(i).Item(3).ToString, "min")
    6. Me.TabControl1.TabPages(i).Controls("cmd_MittagPause" & i + 1).Text = DblToStr_min(myDataTable.Rows(i).Item(4).ToString, "min")
    7. Me.TabControl1.TabPages(i).Controls("lab_KernArbeitszeit" & i + 1).Text = myDataTable.Rows(i).Item(5).ToString & " Std"
    8. Next

    das läuft nicht

    hier sind die meldungen die ich bekomme wenn der code das erste mal versucht das control mit namen anzusprechen

    Eine Ausnahme (erste Chance) des Typs "System.FormatException" ist in mscorlib.dll aufgetreten.

    Eine Ausnahme (erste Chance) des Typs "System.FormatException" ist in mscorlib.dll aufgetreten.

    Eine Ausnahme (erste Chance) des Typs "System.FormatException" ist in Microsoft.VisualBasic.dll aufgetreten.

    Eine Ausnahme (erste Chance) des Typs "System.InvalidCastException" ist in Microsoft.VisualBasic.dll aufgetreten.









    hier die ausgabe nach ablauf des codes von xtts02
    TabPageName: Montag - ControlName: NumericUpDown1 - ControlText: 1
    TabPageName: Montag - ControlName: Label7 - ControlText: Zeit - Modell
    TabPageName: Montag - ControlName: lab_KernArbeitszeit1 - ControlText: 0,00 Std
    TabPageName: Montag - ControlName: Label5 - ControlText: Kern - Arbeitszeit
    TabPageName: Montag - ControlName: lab_Wochentag - ControlText: Montag
    TabPageName: Montag - ControlName: Label3 - ControlText: Mittags-Pause
    TabPageName: Montag - ControlName: Label4 - ControlText: Frhstcks-Pause
    TabPageName: Montag - ControlName: cmd_MittagPause1 - ControlText: 0 min
    TabPageName: Montag - ControlName: cmd_FrühstcksPause1 - ControlText: 0 min
    TabPageName: Montag - ControlName: Label2 - ControlText: Arbeitszeit Ende
    TabPageName: Montag - ControlName: Label1 - ControlText: Arbeitszeit Beginn
    TabPageName: Montag - ControlName: cmd_ArbeitszeitEnde1 - ControlText: 00:00:00
    TabPageName: Montag - ControlName: cmd_ArbeitszeitBeginn1 - ControlText: 00:00:00
    TabPageName: Dienstag - ControlName: NumericUpDown2 - ControlText: 1
    TabPageName: Dienstag - ControlName: Label8 - ControlText: Zeit - Modell
    TabPageName: Dienstag - ControlName: lab_KernArbeitszeit2 - ControlText: 0,00 Std
    TabPageName: Dienstag - ControlName: Label10 - ControlText: Kern - Arbeitszeit
    TabPageName: Dienstag - ControlName: Label11 - ControlText: Dienstag
    TabPageName: Dienstag - ControlName: Label12 - ControlText: Mittags-Pause
    TabPageName: Dienstag - ControlName: Label13 - ControlText: Frhstcks-Pause
    TabPageName: Dienstag - ControlName: cmd_MittagPause2 - ControlText: 0 min
    TabPageName: Dienstag - ControlName: cmd_FrühstcksPause2 - ControlText: 0 min
    TabPageName: Dienstag - ControlName: Label14 - ControlText: Arbeitszeit Ende
    TabPageName: Dienstag - ControlName: Label15 - ControlText: Arbeitszeit Beginn
    TabPageName: Dienstag - ControlName: cmd_ArbeitszeitEnde2 - ControlText: 00:00:00
    TabPageName: Dienstag - ControlName: cmd_ArbeitszeitBeginn2 - ControlText: 00:00:00
    TabPageName: Mittwoch - ControlName: NumericUpDown3 - ControlText: 1
    TabPageName: Mittwoch - ControlName: Label16 - ControlText: Zeit - Modell
    TabPageName: Mittwoch - ControlName: lab_KernArbeitszeit3 - ControlText: 0,00 Std
    TabPageName: Mittwoch - ControlName: Label18 - ControlText: Kern - Arbeitszeit
    TabPageName: Mittwoch - ControlName: Label19 - ControlText: Mittwoch
    TabPageName: Mittwoch - ControlName: Label20 - ControlText: Mittags-Pause
    TabPageName: Mittwoch - ControlName: Label21 - ControlText: Frhstcks-Pause
    TabPageName: Mittwoch - ControlName: cmd_MittagPause3 - ControlText: 0 min
    TabPageName: Mittwoch - ControlName: cmd_FrühstcksPause3 - ControlText: 0 min
    TabPageName: Mittwoch - ControlName: Label22 - ControlText: Arbeitszeit Ende
    TabPageName: Mittwoch - ControlName: Label23 - ControlText: Arbeitszeit Beginn
    TabPageName: Mittwoch - ControlName: cmd_ArbeitszeitEnde3 - ControlText: 00:00:00
    TabPageName: Mittwoch - ControlName: cmd_ArbeitszeitBeginn3 - ControlText: 00:00:00
    TabPageName: Donnerstag - ControlName: NumericUpDown4 - ControlText: 1
    TabPageName: Donnerstag - ControlName: Label24 - ControlText: Zeit - Modell
    TabPageName: Donnerstag - ControlName: lab_KernArbeitszeit4 - ControlText: 0,00 Std
    TabPageName: Donnerstag - ControlName: Label26 - ControlText: Kern - Arbeitszeit
    TabPageName: Donnerstag - ControlName: Label27 - ControlText: Donnerstag
    TabPageName: Donnerstag - ControlName: Label28 - ControlText: Mittags-Pause
    TabPageName: Donnerstag - ControlName: Label29 - ControlText: Frhstcks-Pause
    TabPageName: Donnerstag - ControlName: cmd_MittagPause4 - ControlText: 0 min
    TabPageName: Donnerstag - ControlName: cmd_FrühstcksPause4 - ControlText: 0 min
    TabPageName: Donnerstag - ControlName: Label30 - ControlText: Arbeitszeit Ende
    TabPageName: Donnerstag - ControlName: Label31 - ControlText: Arbeitszeit Beginn
    TabPageName: Donnerstag - ControlName: cmd_ArbeitszeitEnde4 - ControlText: 00:00:00
    TabPageName: Donnerstag - ControlName: cmd_ArbeitszeitBeginn4 - ControlText: 00:00:00
    TabPageName: Freitag - ControlName: NumericUpDown5 - ControlText: 1
    TabPageName: Freitag - ControlName: Label32 - ControlText: Zeit - Modell
    TabPageName: Freitag - ControlName: lab_KernArbeitszeit5 - ControlText: 0,00 Std
    TabPageName: Freitag - ControlName: Label34 - ControlText: Kern - Arbeitszeit
    TabPageName: Freitag - ControlName: Label35 - ControlText: Freitag
    TabPageName: Freitag - ControlName: Label36 - ControlText: Mittags-Pause
    TabPageName: Freitag - ControlName: Label37 - ControlText: Frhstcks-Pause
    TabPageName: Freitag - ControlName: cmd_MittagPause5 - ControlText: 0 min
    TabPageName: Freitag - ControlName: cmd_FrühstcksPause5 - ControlText: 0 min
    TabPageName: Freitag - ControlName: Label38 - ControlText: Arbeitszeit Ende
    TabPageName: Freitag - ControlName: Label39 - ControlText: Arbeitszeit Beginn
    TabPageName: Freitag - ControlName: cmd_ArbeitszeitEnde5 - ControlText: 00:00:00
    TabPageName: Freitag - ControlName: cmd_ArbeitszeitBeginn5 - ControlText: 00:00:00
    TabPageName: Samstag - ControlName: NumericUpDown6 - ControlText: 1
    TabPageName: Samstag - ControlName: Label40 - ControlText: Zeit - Modell
    TabPageName: Samstag - ControlName: lab_KernArbeitszeit6 - ControlText: 0,00 Std
    TabPageName: Samstag - ControlName: Label42 - ControlText: Kern - Arbeitszeit
    TabPageName: Samstag - ControlName: Label43 - ControlText: Samstag
    TabPageName: Samstag - ControlName: Label44 - ControlText: Mittags-Pause
    TabPageName: Samstag - ControlName: Label45 - ControlText: Frhstcks-Pause
    TabPageName: Samstag - ControlName: cmd_MittagPause6 - ControlText: 0 min
    TabPageName: Samstag - ControlName: cmd_FrühstcksPause6 - ControlText: 0 min
    TabPageName: Samstag - ControlName: Label46 - ControlText: Arbeitszeit Ende
    TabPageName: Samstag - ControlName: Label47 - ControlText: Arbeitszeit Beginn
    TabPageName: Samstag - ControlName: cmd_ArbeitszeitEnde6 - ControlText: 00:00:00
    TabPageName: Samstag - ControlName: cmd_ArbeitszeitBeginn6 - ControlText: 00:00:00
    TabPageName: Sonntag - ControlName: NumericUpDown7 - ControlText: 1
    TabPageName: Sonntag - ControlName: Label48 - ControlText: Zeit - Modell
    TabPageName: Sonntag - ControlName: lab_KernArbeitszeit7 - ControlText: 0,00 Std
    TabPageName: Sonntag - ControlName: Label50 - ControlText: Kern - Arbeitszeit
    TabPageName: Sonntag - ControlName: Label51 - ControlText: Sonntag
    TabPageName: Sonntag - ControlName: Label52 - ControlText: Mittags-Pause
    TabPageName: Sonntag - ControlName: Label53 - ControlText: Frhstcks-Pause
    TabPageName: Sonntag - ControlName: cmd_MittagPause7 - ControlText: 0 min
    TabPageName: Sonntag - ControlName: cmd_FrühstcksPause7 - ControlText: 0 min
    TabPageName: Sonntag - ControlName: Label54 - ControlText: Arbeitszeit Ende
    TabPageName: Sonntag - ControlName: Label55 - ControlText: Arbeitszeit Beginn
    TabPageName: Sonntag - ControlName: cmd_ArbeitszeitEnde7 - ControlText: 00:00:00
    TabPageName: Sonntag - ControlName: cmd_ArbeitszeitBeginn7 - ControlText: 00:00:00

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

    Weder am Code noch an der Liste kann ich einen Fehler erkennen. also kann ich nur annehmen ausserhalb dieser Codeteile etwas verändert wird.

    Setze einen Breakpoint an der Stelle , wo Du das Control das 1.Mal mit Namen ansprichst (Zeile3, 2.Beispiel) und schau geb Dir Das Control #12 im Direktfenster aus (mit ?variablenname), insbesondere den Namen. Genauso kannst Du im Direktfenster versuchen das Control mit Namen anzusprechen.
    ich kann machen was ich will, aber ich bekomme das nicht zum laufen.

    Ist aber nicht so schlimm denn es läuft ja wenn ich die Controls mit dem Index anspreche.

    Ich möchte mich bei euch allen für eure Zeit und Mühe bedanken und hoffe das ich euch weiter mit meinen VB Problemen belästigen darf ;)

    g Brave