PDA

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



ehsan_zanganeh
دوشنبه 09 مهر 1386, 11:42 صبح
با سلام
من یک فرم بزرگ دارم و می خوام تمام کنترلها را با یک دستور به حالت اول بازگردانم (ریست)
حالت اول یعنی همانطوری که با اول به کاربر نشون داده می شه(مقدار اولیه)
لطفا کمک کنید.

omidmehraban
دوشنبه 09 مهر 1386, 12:16 عصر
با کد زیر می تونی به تمامی TextBox ها دسترسی داشته باشی:

For Each ctrl As Control In Me.Controls
If TypeOf ctrl Is TextBox Then
CType(ctrl,TextBox).Text=""
End If
Next
حالا برای مقدار اولیه بیشتر توضیح بده.

ehsan_zanganeh
دوشنبه 09 مهر 1386, 13:31 عصر
منظورم از تمام فیلدها:
textbox
combobox
listbox
و غیره است

می دونید یه چیزی مثل دگمه reset در فرمهای وب منظورمه.

از راهنمایتون ممنون

ghafoori
دوشنبه 09 مهر 1386, 21:35 عصر
دوست عزیز می توانید کد اقای omidmehraban به این صورت تغییر دهید

For Each ctrl As Control In Me.Controls
Select Case ctrl.GetType.ToString
Case GetType(TextBox).ToString Or GetType(ComboBox).ToString
ctrl.Text = ""
Case GetType(ListBox).ToString
CType(ctrl, ListBox).Items.Clear()
End Select
Next

ehsan_zanganeh
سه شنبه 10 مهر 1386, 07:27 صبح
هان مشکل همین جاست
اگر در فرم کنترلی مثل panel یا gorupbox داشته باشیم و درون اونها متغییرهایی مثل textbox و یا combobox داشته باشیم و یا این کنترلها بصورت تو در تو تعریف شده باشند ، دیگه نمیشه به این روش عمل کرد.

ولی اگر بتونیم لیست کلیه کنترلها رو در فرم پیدا کنیم . این روش درسته.

اما دوستان توجه داشته باشن که من نمی خوام محتویات آنها clear بشه بلکه می خوام به حالت اولیه خودش برگرده ، دقیقا مثل وقتی که فرم load می شه.

ممنون

ghafoori
سه شنبه 10 مهر 1386, 08:14 صبح
خوب یک تابع بازگشتی مانند این بنویسید

Sub clear_control(ByVal ctrl_collection As ControlCollection)
For Each ctrl As Control In ctrl_collection
Select Case ctrl.GetType.ToString
Case GetType(TextBox).ToString
ctrl.Text = ""
Case GetType(ComboBox).ToString
ctrl.Text = ""
Case GetType(ListBox).ToString
CType(ctrl, ListBox).SelectedItems.Clear()
Case GetType(Panel).ToString
clear_control(CType(ctrl, Panel).Controls)
Case GetType(GroupBox).ToString
clear_control(CType(ctrl, GroupBox).Controls)
End Select
Next
End Sub

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

ehsan_zanganeh
سه شنبه 10 مهر 1386, 08:55 صبح
روی panel این پیغام رو می ده

Unable to cast object of type 'ControlCollection' to type 'ControlCollection'

ghafoori
سه شنبه 10 مهر 1386, 17:17 عصر
کد را بصورت زیر تغییر دهید

Sub clear_control(ByVal ctrl_collection As Panel.ControlCollection)
For Each ctrl As Control In ctrl_collection
Select Case ctrl.GetType.ToString
Case GetType(TextBox).ToString
ctrl.Text = ""
Case GetType(ComboBox).ToString
ctrl.Text = ""
Case GetType(ListBox).ToString
CType(ctrl, ListBox).SelectedItems.Clear()
Case GetType(Panel).ToString
clear_control(CType(ctrl, Panel).Controls)
Case GetType(GroupBox).ToString
clear_control(CType(ctrl, GroupBox).Controls)
End Select
Next
End Sub

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