我正在创建一个系统托盘应用程序。在初始化应用程序时,我想:
表单加载并在后台运行非常重要,因为表单包含一个嵌入式浏览器,它将初始化Web套接字连接以接收数据。但它需要被隐藏。我试着通过使用表单的Visible
属性来解决这个问题。到目前为止,我有这个(只显示相关代码):
public TrayApp()
{
var ni = new NotifyIcon();
InitializeForm();
ni.DoubleClick += this.ShowForm;
}
private void InitializeForm()
{
//load the form in the background so it can start receiving incoming data, but don't actually show the form
myForm = new MyForm();
myForm.Show();
myForm.Visible = false;
}
private void ShowForm(object sender, EventArgs e)
{
myForm.Visible = true;
}
这很有效,除了一个小细节:在启动应用程序时,我简要地看到表单在隐藏之前闪烁。我认为Show
方法还会将Visible
标记设置为true
,从而导致闪存发生。
我试过的其他事情,基于评论:
myForm.Show()
,仅初始化表单。这样可以避免闪存,但不会加载浏览器,因此未初始化websocket连接myForm.Hide()
:与之前相同的效果Opacity
之前将0
设为Show()
,并在将1
设置为Visible
后将其设置为false
:这实际上有效,但是我希望有一个更清洁的解决方案如何避免闪存并保持表单运行但隐藏?
答案 0 :(得分:0)
您可以尝试在显示表单之前设置hide属性。
myForm = new MyForm();
myForm.Visible = false;
myForm.Show();
答案 1 :(得分:0)
您可以尝试编写初始化套接字的函数。将此函数放入MyForm类中,并从InitializeForm()内部调用它。
希望这有帮助。