当一个对话框显示在我的表单中时,可以从两个不同的调用堆栈打开它,或者从右键单击菜单选项或从菜单命令。而且它们是不同的(一个是创建一个新的报表字段,另一个是显示当前报表字段的属性)所以我在该表单的字段中填充的数据是不同的,但在某种程度上,它们也使用了一些常用方法. 所以我想要一种将信息传递给方法的PopulateFields()
方法,以便它知道它是从属性窗口的右键单击还是从插入菜单选项调用的。
因此,在最低级别的类中,我创建了一个像这样的公共枚举,以知道它是从哪里调用的,所以最后PopulateFields()
知道如何根据它的来源来填充字段,正如您看到的调用堆栈转到不同的类所以我不得不将我的枚举定义为公开的。那么公共全局变量?嗯!这就是我想改变的,所以它不会再公开了。什么是更好的解决方案?也许我可以为这个枚举创建一个单独的类,而不是在那个类中定义它?那个更好吗?
public enum FieldDialogSource
{
FromPropertiesWindow,
FromInsertMenu
}
public FieldDialogSource FieldDialogLaunchSource { get; set; }
MyLibrary.FieldDlgController.PopulateFields()
MyLibrary.frmMyForm.Init()
MyLibrary.frmMyForm.ShowForm()
MyLibrary.FieldDlgController.ShowForm()
MyLibrary.Controller.FiledProperties()