当我的表单显示一个对话框时,它可以从两个不同的调用栈打开,无论是从右键菜单选项还是从菜单命令。他们是不同的(一个是创建一个新的报告字段,另一个显示当前报告字段的属性)因此,我填写在该窗体的字段中的数据是不同的,但在某种程度上,他们也使用一些常见的方法。 所以我想要一种方法将信息传递给PopulateFields()
方法,以便知道它是从属性窗口的右键单击还是从插入菜单选项中调用。在同一个DLL的两个类之间传递信息,但没有全局变量,公共变量
因此,在最低级别的课程中,我创建了一个像这样的公共激活来知道它在哪里被调用,因此最后PopulateFields()
知道如何填充字段,取决于它从哪里调用,因为您看到调用堆栈转到不同的类,所以我不得不将我的枚举定义为public。所以公共全局变量?咩!这就是我想要改变的,所以它不会再公开了。什么是更好的解决方案?也许而不是在该类中定义它,我可以为这个枚举创建一个单独的类?那个更好吗?
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()