Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.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#_Window Load - Fatal编程技术网

C# 全部加载前的空白窗口

C# 全部加载前的空白窗口,c#,window-load,C#,Window Load,在加载整个表单之前,如何对空白窗口进行编码?我试着在window_Load(窗口加载)和window_(窗口显示)时在窗口上方拖动一个白色的图片框,但没有成功。有什么想法吗?我制作了一个自定义窗口,因此当它显示时,它将显示为具有自定义外观的消息框,加载完成后,我会这样关闭此窗口 CMessageBox cmb = new CMessageBox("Loading..."); cmb.Show(this); //Do the heavy work here //after the heavy w

在加载整个表单之前,如何对空白窗口进行编码?我试着在window_Load(窗口加载)和window_(窗口显示)时在窗口上方拖动一个白色的图片框,但没有成功。有什么想法吗?

我制作了一个自定义窗口,因此当它显示时,它将显示为具有自定义外观的消息框,加载完成后,我会这样关闭此窗口

CMessageBox cmb = new CMessageBox("Loading...");
cmb.Show(this);

//Do the heavy work here
//after the heavy work finish call cmb.close()

cmb.Close();
当然,cmb是您必须自行定制的窗口

实际上,它只是一种形式,我删除了它的边框,并把它加载到中间的文本中。p> 好的,我将为自定义表单添加代码

创建新表单并将此代码添加到其中

public CMessageBox(string message)
{
    InitializeComponent();
    this.lblMessage.Text = message;
}

private void CMessageBox_Load(object sender, EventArgs e)
{
    this.lblMessage.Top = (this.Height - this.lblMessage.Height) / 2;
    this.lblMessage.Left = (this.Width - this.lblMessage.Width) / 2;
}

private void lblMessage_TextChanged(object sender, EventArgs e)
{
    this.lblMessage.Top = (this.Height - this.lblMessage.Height) / 2;
    this.lblMessage.Left = (this.Width - this.lblMessage.Width) / 2;
    this.Refresh();
}

public string _Caption
{
    get { return this.lblMessage.Text; }
    set { this.lblMessage.Text = value; }
}
在那之后,你称它为我在开始时向你展示的

我已经设置了一个窗口,因此它的宽度和高度都很小,仅用于包含消息,如果您想更改此窗口,则可以忽略这两个事件

private void CMessageBox_Load(object sender, EventArgs e)
{
    this.lblMessage.Top = (this.Height - this.lblMessage.Height) / 2;
    this.lblMessage.Left = (this.Width - this.lblMessage.Width) / 2;
}

private void lblMessage_TextChanged(object sender, EventArgs e)
{
    this.lblMessage.Top = (this.Height - this.lblMessage.Height) / 2;
    this.lblMessage.Left = (this.Width - this.lblMessage.Width) / 2;
    this.Refresh();
}

您需要在设计中添加标签并为其命名LBL消息您还需要将BorderStyle设置为none

我已经创建了一个自定义窗口,因此当它显示时,它将显示为一个具有自定义外观的消息框,并且在加载完成时,我会这样关闭此窗口

CMessageBox cmb = new CMessageBox("Loading...");
cmb.Show(this);

//Do the heavy work here
//after the heavy work finish call cmb.close()

cmb.Close();
当然,cmb是您必须自行定制的窗口

实际上,它只是一种形式,我删除了它的边框,并把它加载到中间的文本中。p> 好的,我将为自定义表单添加代码

创建新表单并将此代码添加到其中

public CMessageBox(string message)
{
    InitializeComponent();
    this.lblMessage.Text = message;
}

private void CMessageBox_Load(object sender, EventArgs e)
{
    this.lblMessage.Top = (this.Height - this.lblMessage.Height) / 2;
    this.lblMessage.Left = (this.Width - this.lblMessage.Width) / 2;
}

private void lblMessage_TextChanged(object sender, EventArgs e)
{
    this.lblMessage.Top = (this.Height - this.lblMessage.Height) / 2;
    this.lblMessage.Left = (this.Width - this.lblMessage.Width) / 2;
    this.Refresh();
}

public string _Caption
{
    get { return this.lblMessage.Text; }
    set { this.lblMessage.Text = value; }
}
在那之后,你称它为我在开始时向你展示的

我已经设置了一个窗口,因此它的宽度和高度都很小,仅用于包含消息,如果您想更改此窗口,则可以忽略这两个事件

private void CMessageBox_Load(object sender, EventArgs e)
{
    this.lblMessage.Top = (this.Height - this.lblMessage.Height) / 2;
    this.lblMessage.Left = (this.Width - this.lblMessage.Width) / 2;
}

private void lblMessage_TextChanged(object sender, EventArgs e)
{
    this.lblMessage.Top = (this.Height - this.lblMessage.Height) / 2;
    this.lblMessage.Left = (this.Width - this.lblMessage.Width) / 2;
    this.Refresh();
}

您需要在设计中添加标签并为其命名LBL消息您还需要将BorderStyle设置为none

我已经创建了一个自定义窗口,因此当它显示时,它将显示为一个具有自定义外观的消息框,并且在加载完成时,我会这样关闭此窗口

CMessageBox cmb = new CMessageBox("Loading...");
cmb.Show(this);

//Do the heavy work here
//after the heavy work finish call cmb.close()

cmb.Close();
当然,cmb是您必须自行定制的窗口

实际上,它只是一种形式,我删除了它的边框,并把它加载到中间的文本中。p> 好的,我将为自定义表单添加代码

创建新表单并将此代码添加到其中

public CMessageBox(string message)
{
    InitializeComponent();
    this.lblMessage.Text = message;
}

private void CMessageBox_Load(object sender, EventArgs e)
{
    this.lblMessage.Top = (this.Height - this.lblMessage.Height) / 2;
    this.lblMessage.Left = (this.Width - this.lblMessage.Width) / 2;
}

private void lblMessage_TextChanged(object sender, EventArgs e)
{
    this.lblMessage.Top = (this.Height - this.lblMessage.Height) / 2;
    this.lblMessage.Left = (this.Width - this.lblMessage.Width) / 2;
    this.Refresh();
}

public string _Caption
{
    get { return this.lblMessage.Text; }
    set { this.lblMessage.Text = value; }
}
在那之后,你称它为我在开始时向你展示的

我已经设置了一个窗口,因此它的宽度和高度都很小,仅用于包含消息,如果您想更改此窗口,则可以忽略这两个事件

private void CMessageBox_Load(object sender, EventArgs e)
{
    this.lblMessage.Top = (this.Height - this.lblMessage.Height) / 2;
    this.lblMessage.Left = (this.Width - this.lblMessage.Width) / 2;
}

private void lblMessage_TextChanged(object sender, EventArgs e)
{
    this.lblMessage.Top = (this.Height - this.lblMessage.Height) / 2;
    this.lblMessage.Left = (this.Width - this.lblMessage.Width) / 2;
    this.Refresh();
}

您需要在设计中添加标签并为其命名LBL消息您还需要将BorderStyle设置为none

我已经创建了一个自定义窗口,因此当它显示时,它将显示为一个具有自定义外观的消息框,并且在加载完成时,我会这样关闭此窗口

CMessageBox cmb = new CMessageBox("Loading...");
cmb.Show(this);

//Do the heavy work here
//after the heavy work finish call cmb.close()

cmb.Close();
当然,cmb是您必须自行定制的窗口

实际上,它只是一种形式,我删除了它的边框,并把它加载到中间的文本中。p> 好的,我将为自定义表单添加代码

创建新表单并将此代码添加到其中

public CMessageBox(string message)
{
    InitializeComponent();
    this.lblMessage.Text = message;
}

private void CMessageBox_Load(object sender, EventArgs e)
{
    this.lblMessage.Top = (this.Height - this.lblMessage.Height) / 2;
    this.lblMessage.Left = (this.Width - this.lblMessage.Width) / 2;
}

private void lblMessage_TextChanged(object sender, EventArgs e)
{
    this.lblMessage.Top = (this.Height - this.lblMessage.Height) / 2;
    this.lblMessage.Left = (this.Width - this.lblMessage.Width) / 2;
    this.Refresh();
}

public string _Caption
{
    get { return this.lblMessage.Text; }
    set { this.lblMessage.Text = value; }
}
在那之后,你称它为我在开始时向你展示的

我已经设置了一个窗口,因此它的宽度和高度都很小,仅用于包含消息,如果您想更改此窗口,则可以忽略这两个事件

private void CMessageBox_Load(object sender, EventArgs e)
{
    this.lblMessage.Top = (this.Height - this.lblMessage.Height) / 2;
    this.lblMessage.Left = (this.Width - this.lblMessage.Width) / 2;
}

private void lblMessage_TextChanged(object sender, EventArgs e)
{
    this.lblMessage.Top = (this.Height - this.lblMessage.Height) / 2;
    this.lblMessage.Left = (this.Width - this.lblMessage.Width) / 2;
    this.Refresh();
}

您需要在设计中添加标签并为其命名LBL消息您还需要将BorderStyle设置为none

Windows使用画家的算法进行绘制,它从后面到前面。因此,你的PictureBox技巧无法工作,因为它是最后一个被绘制的。技术术语是它在Z级中是最高的。将其设置为Z顺序中的最低值也不起作用,它不再覆盖慢速控件

尝试覆盖控件通常不会起作用,移除覆盖会迫使控件重新绘制自己,您将再次看到缓慢的重画。从技术上讲,您可以使用另一个无边界表单来覆盖它,但这在较旧的Windows版本或已关闭Aero的版本上不起作用

您还需要另一个技巧,仍然要绘制控件,但不能使其对用户可见。使用“不透明度”属性可以轻松完成。像这样:

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        this.Opacity = 0;
    }
    protected override void OnShown(EventArgs e) {
        this.Update();
        this.Opacity = 0.99;
        base.OnShown(e);
    }
}

当然,你的窗口不会更快地显示出来,但是现在它会捕捉到屏幕上,给人一种速度的感觉。不要错误地将“不透明度”指定更改为1.0,这会使其再次变慢,因为窗口需要重新创建和重新绘制。

Windows使用画家的算法进行绘制,从后面到前面。因此,你的PictureBox技巧无法工作,因为它是最后一个被绘制的。技术术语是它在Z级中是最高的。将其设置为Z顺序中的最低值也不起作用,它不再覆盖慢速控件

尝试覆盖控件通常不会起作用,移除覆盖会迫使控件重新绘制自己,您将再次看到缓慢的重画。从技术上讲,您可以使用另一个无边界表单来覆盖它,但这在较旧的Windows版本或已关闭Aero的版本上不起作用

您还需要另一个技巧,仍然要绘制控件,但不能使其对用户可见。使用“不透明度”属性可以轻松完成。像这样:

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        this.Opacity = 0;
    }
    protected override void OnShown(EventArgs e) {
        this.Update();
        this.Opacity = 0.99;
        base.OnShown(e);
    }
}

当然,你的窗口不会更快地显示出来,但是现在它会捕捉到屏幕上,给人一种速度的感觉。不要错误地将“不透明度”指定更改为1.0,这会使其再次变慢,因为窗口需要重新创建和重新绘制。

Windows使用画家的算法进行绘制,从后面到前面。因此,你的PictureBox技巧无法工作,因为它是最后一个被绘制的。技术术语是它在Z级中是最高的。将其设置为Z顺序中的最低值也不起作用,它不再覆盖慢速控件

尝试覆盖控件通常不会起作用,移除覆盖会强制控件重新覆盖