Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 启动时显示主窗体中的窗体_C#_.net_Winforms - Fatal编程技术网

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
    位于主窗体后面。我怎么把它带到前面
  • 你认为会发生什么?您的UI线程正在忙于执行下面的代码

    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