Страница: 1 |
Страница: 1 |
Вопрос: Общие правила заполнения 20 текстбоксов. Ундо итд
Добавлено: 01.10.05 19:47
Автор вопроса: student-uni
Имею много текстбоксов. Штук 20 на форме.
В каждом надо проверять чтобы были только цифры и буквы,
а по искейпу делать ундо. Это все получилось.
/не спешите материть за тупой вопрос/
Вопрос в другом:
В результате
у двадцати текстбоксов
в двадати обработчиках события выхода из текстбокса
стоит одинаковый текст, с разницой только в номере
текстбокса.
Такая простыня - распечатать - мумию завернуть.
Вопрос: а что нибудь более универсальное можно
было бы сделать ? Я в смысле, чтобы написать обработчик
один раз, и применить его ко всем текстбоксам на форме.
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #1
Добавлено: 01.10.05 20:12
А они у тебя как массив элементов? или по отдельности? Если я правлиьно понял, то тебе надо типа того:
If KeyCode = vbKeyEscape Then Text1(Index).Text = ""
End Sub
Номер ответа: 2
Автор ответа:
student-uni
Вопросов: 122
Ответов: 257
Профиль | | #2
Добавлено: 02.10.05 12:07
Похоже. Но нужен массив ?
Т.е. у тебя есть доп параметр Index
в котором ты передаёшь номер текстбокса.
Вопро 1
А как ты его в событие кейдаун вставил ?
Или это не событие а подпрограмма,
вызываемая в событии ?
Вопр 2
Text1(Index).Text - это что такое?
как это объявить ?
Моё событие кейПресс имеет всего два параметра.
вот код который я использую для 20 текстбоксов
Private Sub TextBox11_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox11.KeyPress
If Asc(e.KeyChar) = 27 Then
TextBox11.Undo()
End If
End Sub
я так понимаю надо внутри события использовать сабу в которую вынести
If Asc(e.KeyChar) = 27 Then
TextBox11.Undo()
End If
Саба должна получать номер текстбокса
допустим
'каждое их моих 20 событий имеет теперь только сабу
Private Sub TextBox11_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles
MySub (NomerTextboxa)
End Sub
'и всего одну сабу
Private sub MySub(byVal NomerTextboxa As Integer)
If Asc(e.KeyChar) = 27 Then
TextBox(NomerTextboxa).Undo()
End If
End Sub
Я правильно понял ?
Тогда как объявить TextBox(NomerTextboxa) ?
Номер ответа: 3
Автор ответа:
el-paso
Вопросов: 3
Ответов: 164
Профиль | | #3
Добавлено: 02.10.05 14:21
Задай всем TextBox'ам на форме одинаковое имя. При первом же конфликте имён
ВБ спросит тебя, надо ли создать массив. Ответишь "да" и увидишь, что в
свойстве Index TextBox'ов с одинаковыми именами появится число, обозначающее
индекс. Соответственно при создании события у тебя в обработчике появится
третий параметр (Index).
Номер ответа: 4
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #4
Добавлено: 02.10.05 15:51
НЕ совсем создать, надо копировать и вставить. в диалоге ответить, что да, я хочу создать массив. и тогда каждый из них будет отличаться тока по Index
Номер ответа: 5
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #5
Добавлено: 02.10.05 15:58
Номер ответа: 6
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #6
Добавлено: 02.10.05 23:14
форум указывать надо!
Номер ответа: 7
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #7
Добавлено: 05.10.05 02:04
Я видел как-то в SDK пример работы с массивом элементов в VB.NET.