Name der aktiven tabpage ermitteln

Hallo

ich möchte per button alle textboxen und checkboxen einer groupbox einer tabpage auf einmal löschen. dazu habe ich mir als leeren sub folgendes zusammen gefriemelt:

Sub tabpage\_leeren()
 Dim ctl As Object
 Dim grp As Object
 Dim abc As Object
 Dim efg As Object
 For Each grp In Me.Controls
 If TypeOf grp Is TabControl Then
 For Each ctl In grp.controls
 If ctl.name = "TabPage1" Then
 For Each abc In ctl.controls
 If TypeOf abc Is GroupBox Then
 For Each efg In abc.controls
 If TypeOf efg Is TextBox Or TypeOf efg Is CheckBox Then
 efg.text = ""
 End If
 If TypeOf efg Is CheckBox Then
 efg.checked = False
 End If
 Next
 End If
 Next
 End If
 Next
 End If
 Next
 End Sub

Was mich jetzt stört ist dass ich den namen der Tabpage hard reinschreiben muss. Jetzt wollte ich das sub soweit ändern dass der name der tabpage direkt aus dem button code an tabpage_leeren übergebn wird. leider schaff ich es nicht den aktuellen namen der aktiven tabpage zu ermitteln.

Frage also:
Was muss ich tun dass mir der name der aktuellen tabPage zurückgegeben wird?

mfg

Jens

Hallo

ich möchte per button alle textboxen und checkboxen einer
groupbox einer tabpage auf einmal löschen. dazu habe ich mir
als leeren sub folgendes zusammen gefriemelt:

Sub tabpage_leeren()
Dim ctl As Object
Dim grp As Object
Dim abc As Object
Dim efg As Object
For Each grp In Me.Controls

[…viele geschachtelte Schleifen später…]

Next
End Sub

Was mich jetzt stört ist dass ich den namen der Tabpage hard
reinschreiben muss. Jetzt wollte ich das sub soweit ändern
dass der name der tabpage direkt aus dem button code an
tabpage_leeren übergebn wird. leider schaff ich es nicht den
aktuellen namen der aktiven tabpage zu ermitteln.

Frage also:
Was muss ich tun dass mir der name der aktuellen tabPage
zurückgegeben wird?

mfg

Jens

Hallo!

Warum machst Du das Ganze nicht einfach rekursiv und übergibst die TabPage, deren TextBoxen/CheckBoxen gelöscht werden sollen?
Sowas in der Art (aus dem Kopf und in normalerweise gehasstem VB.NET):

private sub tabpage\_leeren(tp as TabPage)
 controls\_leeren(tp.Controls)
end sub

private sub controls\_leeren(coll as Control.ControlCollection)
 if (coll = nothing) then
 return
 end if
 dim ctl as Control
 for each ctl in coll
 controls\_leeren(ctl.Controls)
 ' hier jetzt noch die TextBoxen leeren/CheckBoxen zurücksetzen
 '...
 next 
end sub

Viel übersichtlicher und flexibler, da Du ja direkt die TabPage reinstopfen kannst, die bearbeitet werden soll, unabhängig vom Namen.

Gruß,
Martin

Danke schön :wink:

Hat zwar etwas gedauert bis ich die anwendung gerafft habe aber jetzt funktionierts. War halt etwas schwieriger die aktuelle tabpage herauszufinden um sie zu übergeben aber jetzt funzt es.

gruss Jens