Динамическое добавление одного и того же UserControl несколько раз

StackOverflow https://stackoverflow.com/questions/4821498

  •  26-10-2019
  •  | 
  •  

Вопрос

У меня есть простой Usercontrol, который я создал, который просто позволяет пользователю ввести дату. В настоящее время у него есть единственный текстовый поток с id = "tbdate". Я пытаюсь динамически добавить это управление несколько раз через (например) placeholder.Controls.Add(LoadControl()) Но получаю ошибку «запись с тем же ключом уже существует». Возможно, я мог бы изменить идентификатор элементов, но тогда было бы трудно получить значение, введенное пользователем.
У кого -нибудь есть идея по этому поводу?

Спасибо!

Это было полезно?

Решение

Я генерирую уникальный идентификатор как часть класса компонентов, который я создал, а затем использую это значение в качестве control.id. Вы можете генерировать это уникальное значение любым способом, который вам понравится, но я храню его как часть таблицы баз данных. В конце концов, это не так важно, поскольку, когда класс создается, значения инициализируются и последовательны на протяжении всего запуска приложения.

Класс имеет частную переменную экземпляра:

private Control _control;

При добавлении элемента управления в форму (и, в частности, заполнителя), я делаю что -то подобное. Обратите внимание, что c Ссылки на мой созданный класс.

c.Control.ID = c.ComponentName + c.UniqueIdentifier;
phHere.Controls.Add(c.Control);

Затем, когда мне нужно ссылаться на управление в более поздней точке, я по сути обратил вспять шаги выше:

string component = c.ComponentName + c.UniqueIdentifier;
UserControl uc = (UserControl)ph.FindControl(component);

Надеюсь, это поможет. Если у вас есть вопросы, пожалуйста, не стесняйтесь задать. Корень проблемы, однако, заключается в том, что Control.id должен быть установлен, чтобы избежать ошибки.

Спасибо

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top