PDA

View Full Version : سوال: لیست کنترل های موجود در فرم



alirezash
شنبه 06 آبان 1391, 11:46 صبح
سلام دوستان عزیز .
من احتیاج دارم که لیست کنترل های موجود در فرم را در یک کمبوباکس نشون بدم . که از دستور زیر استفاده می کنم .

Dim con As Control
For Each con In Form1.Controls
ComboBox2.Items.Add(con.Name)
Next
اما مشکل اینجاست که من تو فرمم 4 تا پانل دارم . با این دوستور فقط لیست پانل ها رو نشون میدهد. کنترل های داخل پانل رو نشون نمی دهد.
فقط یک نکته ای که نمیدونم چه پانل هایی در فرم وجود داره یک دستور کلی می خواهم که توی تمام فرمام استفاده کنم




سوال دوم :
حالا فکر کنید می خواهم یک لیستی درست کنم که توش اسم فرم ها و در کنارش نام کنترل های اون فرم باشه.
از دستور زیر نام فرم های رو بدست می آورم . حالا چجوری لیست کنترل های زیر اون فرم را بدست بی آورم
Dim myAssembly As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly()
Dim types As Type() = myAssembly.GetTypes()
For Each myType In types
If myType.BaseType.FullName = "System.Windows.Forms.Form" Then
cmb_form.Items.Add(myType.Name)
End If
Next

mohanad1993
یک شنبه 14 آبان 1391, 20:37 عصر
درود
پاسخ پرسش اولتون
خودتون می تونید کنترل های دیگرو که مثل پنل هستنو اضافه کنید

Dim con As Control
For Each con In Me.Controls
ComboBox1.Items.Add(con.Name)

If con.GetType.ToString = "System.Windows.Forms.Panel" Then
For Each con2 In con.Controls
ComboBox1.Items.Add(con2.Name)
Next
End If

If con.GetType.ToString = "System.Windows.Forms.GroupBox" Then
For Each con2 In con.Controls
ComboBox1.Items.Add(con2.Name)
Next
End If
Next

Hossis
دوشنبه 15 آبان 1391, 18:37 عصر
این کار که آقای محمد گفتند خوبه ولی همه جا جواب نمی ده خصوصا این که اگر داخل پنل هم پنل باشه و داخل اون هم به نوبه خود پنل باشه
چون ممکنه کسی به خاطر نیازش, پنل های تو در تو یا اسپلیترهای تو د رتو داشته باشه
برای این کار باید حلقه های ارجاعی درست کرد (این اصطلاح خودم هست) به این مثال توجه کنید (یک باتن و یک لیست باکس با نام ls و یک سری کنترل و پنل و ... روی فرم بگذارید خصوصا این که تو در تو باشند)
Private Sub GetControls(ByVal ctl As Object)
Try
For Each con As Control In ctl.Controls
If con.Name = Nothing Then con.Name = con.GetType.ToString
ls.Items.Add(con.Name)

GetControls(con)
Next
Catch ex As Exception

End Try
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
GetControls(Me)
End Sub

Hossis
دوشنبه 15 آبان 1391, 19:01 عصر
روی خط شماره 7 از کد بالا دقت کنید: