2016-01-11 10 views
1

Это мой form1, она содержит много флажков и кнопку, чтобы показать Form2:VB Снимите все отмеченные флажками в формах

Public Class Form1 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     Form2.show() 
    End Sub 
End Class 

А вот моя form2, также он содержит много флажков и а кнопка для убрав все галочки на Form1 и Form2:

Public Class Form2 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     'code for clearing all the checkboxes, I don't know how to do it 
    End Sub 
End Class 

Мой вопрос: как я могу сделать код в Form2.Button1 для убрав все галочки в Form1, Form2 и даже других форм ??


Я попробовал этот код, что неустановленный только флажки в форме, где он расположен:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    For Each cc As Control In Me.Controls 
     If TypeOf cc Is CheckBox Then 
      DirectCast(cc, CheckBox).Checked = False 
     End If 
    Next 
End Sub 

Может быть, я могу сделать это, отредактировав этот код .. Я не знаю
Спасибо всем авансовый

+1

Вы должны были бы ссылки на все настоящий момент экземпляры форм. Поэтому вам нужно будет отслеживать это глобально где-нибудь в вашем приложении. – David

ответ

1

Наконец я получил решение:

For Each cc As Control In Me.Controls 
     If TypeOf cc Is CheckBox Then 
      DirectCast(cc, CheckBox).Checked = False 
     End If 
    Next 
    For Each cc As Control In Form1.Controls 
     If TypeOf cc Is CheckBox Then 
      DirectCast(cc, CheckBox).Checked = False 
     End If 
    Next 
1

Вам необходимо сохранить список открытых форм в центральном месте, когда будет создана какая-либо форма, он должен добавить себя в список и, если захочет, удалить себя (вы можете наследовать все свои формы из общей базовой формы, делает это)

Затем вы можете передать все формы аналогичному методу, который выполняет итерацию через них и выполняет эту работу.

Также обратите внимание, что ваш код не отменяет все флажки в форме, он просто отменяет флажки Непосредственно на форме. Если у вас могут быть chackboxes на панелях, групповых ящиках и т. Д., Вам нужно улучшить код, чтобы рекурсивно проверить внутренние элементы управления.

+0

Вероятно, @Alireza сказал, я добавил для вас какой-то рекурсивный код, помогая ему помочь вам справиться с вашей проблемой, спасибо –

+0

@Alireza uhmm .. но я понятия не имею, как это сделать xD Я новичок в программировании vb .net –

+0

@merdolodafoca вы должны сообщить нам, что вы хотите или какие проблемы вы получили, а затем мы можем помочь, чтобы вы рассказали нам более подробно о ваших вопросах. –

1

Вероятно @Alireza сказал, что вы должны рекурсивных проверить внутренние элементы управления, Надеюсь, следующее, что вы хотите,
Спасибо,

Для каждой формы, вам просто нужно вставить

Dim x As New Class1  
x.TempClass(Me) 

Например код

Public Class Form1 
     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
      Dim x As New Class1 
      x.TempClass(Me) 
     End Sub 
End Class 

, а затем вы должны создать новый класс для всех действий CheckBoxs, например, ниже

Public Class Class1 
    Public Function TempClass(ByRef form As Control) 

     Dim allTxt As New List(Of Control) 
     For Each txt As CheckBox In FindControlRecursive(allTxt, form, GetType(CheckBox)) 
      txt.Enabled = False 
      txt.Checked = False 
     Next 
     Return form 
    End Function 



    Public Shared Function FindControlRecursive(ByVal list As List(Of Control), ByVal parent As Control, ByVal ctrlType As System.Type) As List(Of Control) 
     If parent Is Nothing Then Return list 
     If parent.GetType Is ctrlType Then 
      list.Add(parent) 
     End If 
     For Each child As Control In parent.Controls 
      FindControlRecursive(list, child, ctrlType) 
     Next 
     Return list 
    End Function 
End Class 
+0

и за снятие флажков? какую команду я должен использовать? Спасибо –

+0

hi @merdolodafoca за этот образец вам не нужно ничего делать, потому что эта функция обнаружит все флажки в вашей форме –

+0

hi @merdolodafoca Я изменил код, который вам нужен, хороший день –

 Смежные вопросы

  • Нет связанных вопросов^_^