C# 启动时显示主窗体中的窗体
我想在程序运行时显示一个小表单。代码如下:C# 启动时显示主窗体中的窗体,c#,.net,winforms,C#,.net,Winforms,我想在程序运行时显示一个小表单。代码如下: private void Form1_Load(object sender, EventArgs e) { this.Opacity = 0; InitForm init = new InitForm(); init.Show(); init.BringToFront(); comm = init.Start(); this.Opacity = 100; } Start()方法在InitForm上的列表
private void Form1_Load(object sender, EventArgs e)
{
this.Opacity = 0;
InitForm init = new InitForm();
init.Show();
init.BringToFront();
comm = init.Start();
this.Opacity = 100;
}
Start()
方法在InitForm
上的列表框中绘制一些行
我有两个问题:
InitForm
位于主窗体后面。我怎么把它带到前面this.Opacity = 0;
InitForm init = new InitForm();
init.Show();
init.BringToFront();
comm = init.Start();
this.Opacity = 100;
一旦它被释放,它将显示填充的表单和列表框。在我看来,它的行为是正确的
this.Opacity=0代码>
上面这一行不会有任何效果,因为UI线程将首先执行所有行,然后它将显示UI,这意味着当UI显示某个东西时,this.Opacity=100代码>将已执行
I want to display a small form when the program is ran. The InitForm
is behind the main form. How do I bring it to front?
为什么不将小表单
设置为启动表单,并在小表单的加载方法中加载主表单
?您应该在并行线程上加载次表单。
因此,在Form1的load事件处理程序上触发第二个线程,显示Form2。在该代码中看不到列表框。但是,在加载事件处理程序完成后,直到UI线程再次空闲,绘制才会发生。这也意味着不透明度指定不会完成任何事情
Z顺序问题(部分)也是由这一点引起的,因为主窗体还不可见,所以BringToFront()不起作用。使用Show(this)使InitForm成为主窗体上始终显示在前面的自有窗口(推荐),或者使用Show事件。您可以通过设置此属性将Init窗体置于前面
init.TopMost=true
它对我有效,请检查,在第二个窗体上运行的无限线程是否会锁定它?不,它只是一系列指令。
init.TopMost=true