powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перебор контролов на страницах TabControl.
11 сообщений из 11, страница 1 из 1
Перебор контролов на страницах TabControl.
    #32554210
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача, по значению True или False переменной SW поменять значение ReadOnly у текстовых полей находящихся на закладках TabControl.

Для простой формы пишу так
Код: plaintext
1.
2.
3.
4.
5.
6.
Dim oCurr As Object
For Each oCurr In Me.Controls()
            If TypeOf oCurr Is TextBox Then
                oCurr.ReadOnly = sw
            End If
        Next
и все работает

Для TabControl наверное надо так
Код: plaintext
1.
2.
3.
4.
5.
For Each oCurr In TabControl1.Controls()
            If TypeOf oCurr Is TextBox Then
                oCurr.ReadOnly = sw
            End If
        Next

но не работает, что я не так делаю?
...
Рейтинг: 0 / 0
Перебор контролов на страницах TabControl.
    #32554280
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dencat
Для TabControl наверное надо так
Код: plaintext
1.
2.
3.
4.
5.
For Each oCurr In TabControl1.Controls()
            If TypeOf oCurr Is TextBox Then
                oCurr.ReadOnly = sw
            End If
        Next

но не работает, что я не так делаю?

Таким образом вы перебираете TabPage

Добраться до TextBox можно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
For Each oCurr In TabControl1.Controls()
    Dim myControl as Control
    For Each myControl In oCurr.Controls()
       If TypeOf myControl Is TextBox Then
              myControl.ReadOnly = sw
       End If
    Next
Next
...
Рейтинг: 0 / 0
Перебор контролов на страницах TabControl.
    #32554304
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, сейчас попробую.
Как бы весь этот синтаксис и структуру выучить, побыстрее в смысле...:)
...
Рейтинг: 0 / 0
Перебор контролов на страницах TabControl.
    #32554310
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dencatСпасибо, сейчас попробую.
Как бы весь этот синтаксис и структуру выучить, побыстрее в смысле...:)

Ctrl + Alt + J = Object Browser и вперед :-)
...
Рейтинг: 0 / 0
Перебор контролов на страницах TabControl.
    #32554345
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, заработало так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
For Each oCurr In TabControl1.Controls()
            Dim myControl As Object
            For Each myControl In oCurr.controls()
                If TypeOf myControl Is TextBox Then
                    myControl.readOnly = sw
                End If
            Next
        Next

Но есть проблема, некоторые TextBox находятся в рамках,GroupBox, вот до них как добраться?
...
Рейтинг: 0 / 0
Перебор контролов на страницах TabControl.
    #32554414
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dencat
Но есть проблема, некоторые TextBox находятся в рамках,GroupBox, вот до них как добраться?

Если вложенность известна , то можно легко доработать текущую процедуру проверить если текущий control является GroupBox, то запустить еще один For Each для него.

А вообще во времена великого VFP, я для этих целей писал рекурсивную процедуру перебирающей все контролы на форме.
Тоже самое можно сваять и здесь, будут "перебираться" все контролы на форме. Про эффективность такого подхода для "больших форм" не скажу, надо проверять.
...
Рейтинг: 0 / 0
Перебор контролов на страницах TabControl.
    #32554613
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получилост так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
Dim oCurr As Object

            For Each oCurr In TabControl1.Controls()

                Dim myControl As Object

                For Each myControl In oCurr.controls()

                    'Обрабатываем контролы в GroupBox ах.
                    If TypeOf myControl Is GroupBox Then
                        Dim myGroupBox As Object
                        For Each myGroupBox In myControl.controls()
                            If TypeOf myGroupBox Is TextBox Then
                                myGroupBox.readOnly = sw
                            End If
                            If TypeOf myGroupBox Is Button Then
                                myGroupBox.enabled = Not sw
                            End If
                            If TypeOf myGroupBox Is DataGrid Then
                                myGroupBox.enabled = Not sw
                            End If
                        Next
                    End If
                    'Обрабатываем TextBox
                    If TypeOf myControl Is TextBox Then
                        myControl.readOnly = sw
                    End If
                    'Обрабатываем Button
                    If TypeOf myControl Is Button Then
                        myControl.enabled = Not sw
                    End If
                    'Обрабатываем DataGrid
                    If TypeOf myControl Is DataGrid Then
                        myControl.enabled = Not sw
                    End If

                Next

            Next
...
Рейтинг: 0 / 0
Перебор контролов на страницах TabControl.
    #32554641
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dencatПолучилост так:


4+ :-)
...
Рейтинг: 0 / 0
Перебор контролов на страницах TabControl.
    #32554796
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вопрос, каким образом можно очистить форму при закрытии, или при открытии.
А то открываю форму на просмотр данных, все гуд(Вашими стараниями:)), потом закрываю.
Нажимаю кнопку ввода новых данных, должна открываться таже форма но со всеми пустыми полями, открывается естественно заполненая данными, которые просматривал в последний раз.

Вопрос, есть ли какойнибудь метод, типа myform.clear() чтобы очистить форму, или нужно закручивать обратный цикл на присвоение текстовым полям "", а кнопки обратно включать?
...
Рейтинг: 0 / 0
Перебор контролов на страницах TabControl.
    #32555387
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dencat
Нажимаю кнопку ввода новых данных, должна открываться таже форма но со всеми пустыми полями, открывается естественно заполненая данными, которые просматривал в последний раз.

Пусть класс формы ввода данных называется EditForm.
Из другой формы (mainForm) открываем модальный или не модальный EditForm

Код: plaintext
1.
2.
Dim f as EditForm = new EditForm()  ' Всегда создаем экземпляра нашего класса EditForm, следовательно и поля будут пустыми
f.ShowDialog()

dencat
Вопрос, есть ли какойнибудь метод, типа myform.clear() чтобы очистить форму, или нужно закручивать обратный цикл на присвоение текстовым полям "", а кнопки обратно включать?

Такого метода нет, но проблема решается (обычно не возникает, хотя я не знаю вашу задачу) при создании нового экземпляра формы при необходимости ее запуска
...
Рейтинг: 0 / 0
Перебор контролов на страницах TabControl.
    #32556571
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, сейчас попробую.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перебор контролов на страницах TabControl.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]