今回はアップグレードできない古い.Net 1.1アプリを変更する必要があります。アプリはひどく設計されており、場所を問わず、繰り返し機能、コメントアウトされていない未使用コード、実際に使用されているものについては表記なしで同じユーザーコントロールの複数の繰り返しがあります。使用されるユーザコントロールは、ユーザコントロールではないコントロールと混在しますが、中央のForm
に実装された場合とまったく同じです。親コントロールを知らずにコントロールを見つける方法(.Net 1.1)
MainForm
と呼ばれる中央のForm
は、それ自体がWorkForm
を各ページに保持しています。これらは、ユーザー入力から動的に生成されます。 WorkForm
は、ユーザーコントロールであり、前述のユーザーコントロールと含まれている/含まれていないコントロール、パネルなどが含まれています。親子は、完全にロードされているデータに基づいてフォームとコントロールの間で動的になり、問題の複雑さが増します。
4番目のタブのWorkForm
ユーザーコントロールの一部であるユーザーコントロールのインスタンスには、データグリッドがあります。そのデータグリッド内の新しい行を追加するコードを変更する必要がありますユーザーコントロールの同じWorkForm
にあり、そのSelectedValue
を取得します。私は本質的に "Where's Waldo"に必要なコントロールが必要ですが、コントロール階層が保証されていないという事実に適応するのに十分な "Carmen Sandiego"が必要です。また、Demeterの法則は、「Demeterの法則」のようなものです。そうすべきではないはずの静的変数への本当にクルージングな呼び出しは、アプリの実行方法とほとんど同じです。関係が保証されていないため、このコントロールを追い詰めるについて行くための最良の方法だろう何
Dim row as DataRow = aDataTable.NewRow()
row[12] = Me.Parent.Cousin.TwiceRemoved.OnFathersSide.NotThatOne _
.TheOtherOne.SelectedValue
:
のようなものを? P.S.私はアプリを書いていない。私はちょうどこの悪夢に変更を加えるための指示に立ち往生しています。
このような状況の中でこれを実行するには、これは最善の方法ですが、最終的には、はっきりと別のアプローチを取るようにラダーを説得することができました。 – CDove