フォームにダイアログが表示されると、右クリック メニュー オプションまたはメニュー コマンドのいずれかから、2 つの異なるコール スタックから開くことができます。そして、それらは異なります (1 つは新しいレポート フィールドを作成し、もう 1 つは現在のレポート フィールドのプロパティを表示します) したがって、そのフォームのフィールドに入力するデータは異なりますが、どこかで共通の方法も使用しています。 . そのため、情報をメソッドに渡す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()