none
Abfragen verschiedener Textbox-Elemente anhand zusammengesetzter Bezeichner RRS feed

  • Frage

  • Hallo,

    ich habe verschiedene Textboxes, die ich später in einer for...next-Schleife abfragen möchte. Dazu muss ich in jedem Schleifendurchlauf als String-Quelle die entsprechende TextBox bestimmen:

    Absatz1Durchmesser.text="10" ' Textbox
    Absatz2Durchmesser.text="20" ' Textbox
    
    for i=1 to 2
    quelle="Absatz" & i & "Durchmesser" ' String-Quelle
    msgbox(quelle.txt)
    next i
    
    
    Bisher habe ich leider keine funktionierende Lösung gefunden...ich würde mich über Tipps freuen...
    Dienstag, 19. November 2013 08:42

Antworten

Alle Antworten

  • Uihh, hab's selbst geschafft :o) FREU FREU
    • Als Antwort markiert Mib76 Dienstag, 19. November 2013 09:12
    Dienstag, 19. November 2013 09:12
  • Uihh, hab's selbst geschafft :o) FREU FREU

    Super.

    Wäre es möglich, die Lösung dann auch noch zu posten? Dann haben andere auch noch was davon.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 19. November 2013 09:52
    Moderator
  • OK, sorry.

    Die abzufragende TextBox definiere ich in jedem For...next-Durchlauf mithilfe der Funktion "Controls.Find" und der Verkettung der einzelnen TextBox-Namensbestandteile und der Schleifenvariablen "i":

    QuelleMaß = Controls.Find("TextBoxAchseFestlagerAbsatz" & i & "Durchmesser", True)

    Dabei ist wichtig, dass diese Funktion ein Array ausgibt, d. h. das Control-Object (hier "QuelleMaß" und "QuellePassung") muss immer mit dem Index 0 ("QuelleMaß(0).text") abgefragt werden. Hat etwas gedauert, bis ich das herausgefunden habe...

            ' Achsansätze Festlagerseite
            Dim QuelleMaß() As Control 'TextBoxAchseFestlagerAbsatz1Durchmesser
            Dim QuellePassung() As Control
            For i = 1 To 5
    
                If i <= CInt(ComboBoxAchseFestlagerAnsätze.Text) Then
                    ' Absatzdurchmesser HINTER Einstich (falls Einstich vorhanden)
                    QuelleMaß = Controls.Find("TextBoxAchseFestlagerAbsatz" & i & "Durchmesser", True) ' TextBoxAchseFestlagerAbsatz1Durchmesser
                    QuellePassung = Controls.Find("TextBoxAchseFestlagerAbsatz" & i & "DurchmesserPassung", True) ' TextBoxAchseFestlagerAbsatz1DurchmesserPassung
                    BemaßungD(sender, e, _
                              New PointF(-pAchsStirnfläche(i - 1).X, -pAchsStirnfläche(i).Y), _
                              New PointF(-pAchsStirnfläche(i - 1).X, pAchsStirnfläche(i).Y), _
                              180, _
                              6, _
                              QuelleMaß(0).Text, _
                              QuellePassung(0).Text, _
                              -18)
                    ' AbsatzTiefe
                    QuelleMaß = Controls.Find("TextBoxAchseFestlagerAbsatz" & i & "Tiefe", True) ' TextBoxAchseFestlagerAbsatz1Tiefe
                    QuellePassung = Controls.Find("TextBoxAchseFestlagerAbsatz" & i & "TiefePassung", True) ' TextBoxAchseFestlagerAbsatz1TiefePassung
                    BemaßungL(sender, e, _
                              New PointF(pAchsStirnflächeFest.X, pAchsStirnflächeFest.Y), _
                              New PointF(-pAchsStirnfläche(i - 1).X, pAchsStirnfläche(i - 1).Y), _
                              65 - i * 7.5, _
                              QuelleMaß(0).Text, _
                              QuellePassung(0).Text, _
                              0)
                    ' Einstichtiefe
                    QuelleMaß = Controls.Find("TextBoxAchseFestlagerAbsatz" & i & "Einstichmaß", True) ' TextBoxAchseFestlagerAbsatz1EinstichMaß
                    QuellePassung = Controls.Find("TextBoxAchseFestlagerAbsatz" & i & "EinstichmaßToleranz", True) ' TextBoxAchseFestlagerAbsatz1EinstichMaßToleranz
                    If Not QuelleMaß(0).Text = "" Then ' Einstichbemaßung, falls Einstich eingetragen
                        BemaßungL(sender, e, _
                                  New PointF(-pAchsStirnfläche(i).X + 2, pAchsStirnfläche(i).Y), _
                                  New PointF(-pAchsStirnfläche(i - 1).X, pAchsStirnfläche(i - 1).Y), _
                                  65 - 7.5 - i * 7.5, _
                                  QuelleMaß(0).Text, _
                                  QuellePassung(0).Text, _
                                  0)
                        ' Absatzdurchmesser VOR Einstich
                        QuelleMaß = Controls.Find("TextBoxAchseFestlagerAbsatz" & i & "Durchmesser", True) ' TextBoxAchseFestlagerAbsatz1Durchmesser
                        QuellePassung = Controls.Find("TextBoxAchseFestlagerAbsatz" & i & "Schiebepassung", True) ' TextBoxAchseFestlagerAbsatz1Schiebepassung
                        BemaßungD(sender, e, _
                                    New PointF(-pAchsStirnfläche(i).X, pAchsStirnfläche(i).Y), _
                                    New PointF(-pAchsStirnfläche(i).X, -pAchsStirnfläche(i).Y), _
                                    180, _
                                    1.5, _
                                    QuelleMaß(0).Text, _
                                    QuellePassung(0).Text, _
                                    -15)
    
    
                    End If
    

    Dienstag, 19. November 2013 10:46