我正在编写一个必须隐藏主窗体的应用程序,但它在启动时会显示一个对话框。
我的主表单在构造函数调用的 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;
我在这个问题的答案中至少找到了这个解决方案的一部分,并在另一个项目中使用了它。该项目虽然没有使用表单加载事件。我正在做的那个。
更新 这是 Main 方法的样子。我正在尝试将依赖项注入所有元素。我已更改名称以删除客户名称。
[STAThread] 静态无效 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);
}