PDA

View Full Version : آموزش: خالی کردن تکس باکس ها در صفحه



behrooz69
یک شنبه 18 آذر 1397, 13:16 عصر
دوستان سلام من با این کد تکس باکس های داخل یه GroupBox رو خالی میکنم .

Private Sub ClearAllTextBox()
For Each grp As Control In Me.Controls
If TypeOf grp Is GroupBox Then
For Each ctl As Control In grp.Controls
If TypeOf ctl Is TextBox Then
ctl.Text = Nothing
End If
Next
End If
Next
End Sub

مشکل اینجاس ، که اگه یه GroupBox باشه کار میکنه و اگه چندتا گروپ باکس باشه کد کار نمیکنه .

همفکری شما را خواستارم

محمد آشتیانی
یک شنبه 18 آذر 1397, 15:21 عصر
سلام
یک ماژول درست کنید و این متد رو داخلش بنویسید

Public Sub FetchAllControls(parent As Control, action As Action(Of Control))

For Each control As Control In parent.Controls
action(control)
FetchAllControls(control, action)
Next


End Sub


بعد توی هر فرمی که خواستید ، به این شکل فراخوانی کنید

FetchAllControls(Me, (Sub(x)
Dim textBox = TryCast(x, TextBox)
If (textBox IsNot Nothing) Then
textBox.Text = String.Empty
End If
End Sub))


با متد بالا می تونید ، هر خصوصیتی رو از هر کنترلی تغییر بدید و محدودیت نداره (فقط موقع فراخوانی مشخص می کنید چه نوع کنترلی مورد نظر شماست و کدام پراپرتی تغییر کنه)

مثلا اگر بخواهید همه چک باکس های فرم رو تیک بزنید :

FetchAllControls(Me, (Sub(x)
Dim checkBox = TryCast(x, CheckBox)
If (checkBox IsNot Nothing) Then
checkBox.Checked = True
End If
End Sub))


یا مثلا اگر بخواهید تمام چک باکس های روی GroupBox1 رو تیک بزنید:

FetchAllControls(GroupBox1, (Sub(x)
Dim checkBox = TryCast(x, CheckBox)
If (checkBox IsNot Nothing) Then
checkBox.Checked = True
End If
End Sub))


موفق باشید

behrooz69
دوشنبه 19 آذر 1397, 09:56 صبح
خیلی ممنونم ازتون ، دکمه تشکر برام غیر فعاله که تشکر کنم ازتون

ماژول تعریف کردم

و توی فرمم اومدم ماژول رو فراخوندم و دستورش.

ولی اررور Type as expression داد ، و گیر میده که باید خود متد ماژول رو هم بنویسی دوباره یعنی اینجوری

Module FetchAllControls

Public Sub FetchAllControls(parent As Control, action As Action(Of Control))

For Each control As Control In parent.Controls
action(control)
FetchAllControls(control, action)
Next

End Sub

End Module


و توی فرم :

Public Class Form2

Public Sub FetchAllControls(parent As Control, action As Action(Of Control))

For Each control As Control In parent.Controls
action(control)
FetchAllControls(control, action)
Next

End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
FetchAllControls(Me, (Sub(x)
Dim textBox = TryCast(x, TextBox)
If (textBox IsNot Nothing) Then
textBox.Text = String.Empty
End If
End Sub))
End Sub


End Class