Применяете шаблон flyweight для элементов управления? - PullRequest
0 голосов
/ 19 июля 2011

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

Проблема, с которой я сейчас сталкиваюсь, состоит в том, что создание каждого элемента управления может занять до 50 мс, что означает, что для сетки 10x10 заполнение сетки займет 5 секунд.

Я подумываю об использовании навесного веса. Я не знаком с этим шаблоном. Единственное, что я знаю, это то, что он позволяет одному объекту быть разделенным между многими "клиентами". Но не уверен, как это можно сделать, потому что каждый элемент управления может быть назначен только одной ячейке (родительской). Я не могу поделиться контролем, не так ли?

Есть предложения?

1 Ответ

0 голосов
/ 20 июля 2011

Похоже, я пытался создать свое первое приложение, подобное Excel, в OS / 2 Presentation Manager. Это было в 1990 году, если я правильно помню (да, я такой старый). Оказалось невозможным создать столько элементов управления редактированием, сколько я имел на своем листе.

Вместо создания всех элементов управления с самого начала, сделайте «предварительный просмотр» элемента управления. В большинстве случаев достаточно просто показать текст, как в Excel.

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

...