當我的表單顯示一個對話框時,它可以從兩個不同的調用棧打開,無論是從右鍵菜單選項還是從菜單命令。他們是不同的(一個是創建一個新的報告字段,另一個顯示當前報告字段的屬性)因此,我填寫在該窗體的字段中的數據是不同的,但在某種程度上,他們也使用一些常見的方法。 所以我想要一種方法將信息傳遞給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()