我知道标题具有误导性,但我想不出更好的方法来解决这个问题。我有一个显示表单的程序,允许用户从其他程序中选择运行。然后我试图创建一些通用代码来调用表单。在不复制代码的情况下不确定最佳方法。这是我想做的;
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,因此遇到了同样的问题。