作成したコンポーネント クラスの一部として一意の識別子を生成し、その値を 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 を設定する必要があることです。
ありがとう