Я генерирую уникальный идентификатор как часть созданного мной класса Component, а затем использую это значение в качестве 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 должен быть установлен во избежание ошибки.
Спасибо