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

В VB6 была возможность обратиться к контролу несколькими способами:

Код: plaintext
1.
2.
 1 . Me.Controls!MyControl
 2 . Me.Controls("MyControl")
 3 . Me.Controls( 15 )

Мне нужен способ 2, т.к. имя контрола у меня вычисляется как стринг. Неужели в VB.NET это убрали? Слово Item дает только одну подсказку: index As Integer. Если все-таки написать по синтаксису 2, то при исполнении выдается ошибка о невозможности преобразовать стринг в число.

Пока извернулся так:

Код: plaintext
1.
2.
3.
4.
5.
    Private Function Ctrl(ByVal sName As String) As Control
        Dim c As Control
        For Each c In Me.Controls
            If c.Name = sName Then Return c
        Next
    End Function

Но это страшно неэстетично. А как надо?
...
Рейтинг: 0 / 0
Обратиться к контролу через его имя как стринг
    #32590926
Jenek111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сдается мне, это единственный способ. так как при обращении в VB или VBA
типа Controls(имя) - реализовано точно также, просто внутрисистемно. тот же перебор.
...
Рейтинг: 0 / 0
Обратиться к контролу через его имя как стринг
    #32590957
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю, что в именованных коллекциях элемент ищется не полным перебором, а при помощи какой-то индексации (типа индексов в таблице). У меня эстетический дискомфорт.
...
Рейтинг: 0 / 0
Обратиться к контролу через его имя как стринг
    #32591190
Ustazz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Me.FindControl("MyControl")
...
Рейтинг: 0 / 0
Обратиться к контролу через его имя как стринг
    #32591237
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО все одно
Можно конечно вообще через обычный for завернуть, видел какие то тесты немножко будет быстрее.

P.S. В NetFrameWork 2.0
Вариант № 2
Код: plaintext
1.
Me.Controls("MyControl")
реализован, так что не эстетичность не много осталось потерпеть

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Обратиться к контролу через его имя как стринг
    #32591275
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UstazzMe.FindControl("MyControl")
Нет такого зверя. Есть Me.FindForm, но это не то.
...
Рейтинг: 0 / 0
Обратиться к контролу через его имя как стринг
    #32591279
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SaМожно конечно вообще через обычный for завернуть, видел какие то тесты немножко будет быстрее.
Да нет, со скоростью нет проблем.
...
Рейтинг: 0 / 0
Обратиться к контролу через его имя как стринг
    #32591351
Ustazz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч UstazzMe.FindControl("MyControl")
Нет такого зверя. Есть Me.FindForm, но это не то.

Извиняюсь, с асп спутал...
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Обратиться к контролу через его имя как стринг
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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