最近、WinFormsプロジェクトのユーザーコントロールのコードをリファクタリングし、テキストボックス、コンボ、ボタンが配置されたばかりのユーザーコントロールから、すべてを保持するTableLayoutPanelを含むユーザーコントロールに変更しました。より良い順序で制御します。
私の問題は、多くの場所で、コードがコントロールディクショナリを介してユーザーコントロールにネストされたコントロールを直接アドレス指定することです。たとえば、次のようになります。MyUserControl.Controls["NameOfTextBox"].Visible = false;
これで、TableLayoutPanelにテキストボックスとボタンをネストした後、そのようなアドレス指定を行うことができなくMyUserControl.Controls[0].Controls["NameOfTextBox"].Visible = false;
なりました。そうしないと例外が発生するため、を記述する必要があります。
私の質問は、ユーザーコントロールのコンテンツに対応するすべての場所ですべてのコードを変更する必要があるのか、それともユーザーコントロール自体に実装するための回避策を提供できるのかということです。したがって、コントロールに直接対応しようとすると、 TableLayoutPanelのコンテンツに転送します。
何か案は?