メイン フォームを非表示にする必要があるアプリケーションを作成していますが、起動時にダイアログが表示されます。
私のメイン フォームには、コンストラクターによって呼び出される initialize() メソッドに次の行があります。
this.Load += new System.EventHandler(this.MainForm_Load);
上記のコードがヒットすることを確認しましたが、 MainForm_Load() メソッドは呼び出されません。
これは、フォームを非表示にしているためでしょうか?
Program.cs の Main で次の行を実行します。
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
そして、フォームで次のメソッドをオーバーライドしました:
protected override void SetVisibleCore(bool value)
{
_logger.Debug("Hiding the main window");
base.SetVisibleCore(allowShowDisplay ? value : allowShowDisplay);
}
allowShowDisplay が false に設定されている場合。
この質問への回答でこのソリューションの少なくとも一部を見つけ、別のプロジェクトで使用しました。ただし、そのプロジェクトはフォーム読み込みイベントを使用しませんでした。私が取り組んでいるものはそうです。
UPDATE Main メソッドは次のようになります。すべての要素に依存関係を注入しようとしています。名前を変更して、顧客名を削除しました。
[STAThread] static void Main() {
ServiceHost incomingPipeHost = new ServiceHost(typeof(ScreenPopService));
incomingPipeHost.Open();
XmlConfigurator.Configure();
_logger.Debug("Starting Application");
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
_logger.Debug("Creating subformView");
ISubformView subformView = new SubformView();
_logger.Debug("Creating MainForm mainForm");
MainForm mainForm = new MainForm();
_logger.Debug("Creating MonitorController");
IMonitorController MonitorController = new MonitorController();
_logger.Debug("Adding View to MonitorController");
MonitorController.View = mainForm;
_logger.Debug("Adding subFormView to mainForm");
mainForm.SubFormView = subFormView;
_logger.Debug("Adding MonitorController to mainForm");
mainForm.MonitorController = MonitorController;
_logger.Debug("Loading Properties");
IProperties properties = PropertiesManager.LoadProperties();
_logger.DebugFormat("Loaded Properties [{0}]", properties);
_logger.Debug("Setting properties on mainForm");
mainForm.Properties = properties;
_logger.Debug("Setting properties on MonitorController");
MonitorController.Properties = properties;
_logger.Debug("Settting ScreenPop Consumer on MonitorCotroller");
MonitorController.screenPopConsumer = ScreenPopCallBackManager.Instance;
_logger.Debug("Debug Running Application");
Application.Run(mainForm);
}