none
C# как лучше получить Control по имени или по Handle RRS feed

Все ответы

  • Добрый день.

    Поместите на форму 1000 контролов (программно) и посмотрите. Но второй вроде быстрее должен работать, т.к. идет не поиск через индексатор, а по идентификатору который используется ну уж очень во многих местах.

    17 сентября 2014 г. 7:15
    Отвечающий
  • правильно понимаю?

    в 1-м случае поиск по имени, т.е. тупо перебираются все дочерние контролы и проверяется их имя(сравниваются строки, что само по себе затратно)примерная оценка такого подхода О(n).

    А во 2-м обращение по ключу(Handle) в хэш-таблице, т.е. обращение за О(1)

    17 сентября 2014 г. 7:24
  • Дело в том, что при наличии 100-200 контролов разница во времени поиска будет незначительная. Если у вас стоит задача искать котролы в больших выборках или очень часто, то я бы делал свою коллекцию (например, на основе Dictionary) и искал в ней...
    17 сентября 2014 г. 7:26
    Отвечающий
  • динамически формируется набор контролов(что-то вроде panel, для того чтобы directshow мог отрисовывать на них видео) в tablelayoutPanel. все они именуются следующим образом panel_0, panel_1 и т.д. для каждого видео я знаю индекс, и вот чтобы обратиться к нужном panel, я осуществляю поиск tablelayoutPanel.Controls["panel_" + VideoItem.index]. не проще ли обращаться по handle???
    17 сентября 2014 г. 7:36