2

更新(2011-01-17):

我正在FormBorderStyle=None使用 MdiContainer 创建一个表单。当我显示第一个表单时,即使它已经创建,它也会在几分之一秒内出现正常表单的蓝色边框,然后它会被还原。

对于下面的示例,在 button1 上一次又一次地单击,它会不时显示这种行为,虽然它是一个非常短暂的时间流逝,所以我想在非常快的机器上很难看到它;但是,在我的带有 3rd 方 .net 控件的生产代码中,它显示的时间更长。

要尝试此操作,只需创建一个新项目和一个名为 Form2 的 Windows 窗体,向 Form1 添加一个按钮,添加事件 Form1_Load 和 button1_Click,然后粘贴代码。然后,单击 button1 片刻。

public partial class Form1 : Form
{
    Form2 form;
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        form.Visible = !form.Visible;
        form.MdiParent = this;

    }

    private void Form1_Load(object sender, EventArgs e)
    {
        this.IsMdiContainer = true;
        form = new Form2();
        form.FormBorderStyle = FormBorderStyle.None;
    }
}

这与语言无关,所以请不要在没有充分理由的情况下更改我的标签。

4

3 回答 3

1

如果有什么东西拖慢了你的主 UI 线程,Windows 将使用默认值绘制表单(至少在 Vista/Windows 7 的 DVM 世界中),直到你的线程再次响应。检查以确保您的 UI 线程在首次显示表单时没有等待其他线程或执行一些繁重的处理。

于 2011-01-12T18:26:19.630 回答
1

我在我的应用程序中遇到了同样的问题,我在 Form-Load Function 中添加了以下行作为第一行来解决问题

this.FormBorderStyle = FormBorderStyle.None;

于 2016-03-05T07:14:10.450 回答
0

这可能取决于您是在加载时、在构造函数中还是在 Shown 上更改 FormBorderStyle。最好在构造函数中进行(InitializeComponents 方法)。

于 2011-01-12T12:35:44.623 回答