タイトルが誤解を招くものであることは承知していますが、この問題に対するより良い方法は思いつきませんでした。ユーザーが他のプログラムから選択して実行できるようにするフォームを表示するプログラムがあります。次に、フォームを呼び出すための一般的なコードを作成しようとしています。コードを複製せずに最善の方法がわからない。これが私がやろうとしていることです。
TaxYearForm loTaxYear = new TaxYearForm();
var loTaxProgram = new BaseForm();
if (loTaxYear.ShowDialog() == DialogResult.OK)
{
string lsTaxModule = loTaxYear.gsTaxModule.ToUpper();
int lnTaxYear = loTaxYear.gnPrimaryFilter;
switch (lsTaxModule)
{
case "RE":
RealEstateForm loTaxProgram = new RealEstateForm();
break;
case "PC":
PerCapitaForm loTaxProgram = new PerCapitaForm();
break;
}
loTaxProgram.gsUserId = gsUserId;
loTaxProgram.gnPrimaryFilter = lnTaxYear;
loTaxProgram.gnSecurityLevel = gnSecurityLevel;
loTaxProgram.ShowDialog();
switch ステートメント内で変数 loTaxProgram の目的を変更しているため、これを行うことはできません。すべてのコードを各 case ステートメント内に入れることができますが、それは避けたいことです。クラス内にメソッドを作成しましたが、パラメーターを BaseForm として宣言する必要があったため、同じ問題がありました。