2

更新 (2011-01-17):

FormBorderStyle=NoneMdiContainer 内でフォームを作成しています。最初のフォームを表示すると、既に作成されている場合でも、ほんの一瞬、通常のフォームの青い境界線が表示され、その後元に戻されます。

次のサンプルでは、​​ボタン 1 を何度もクリックすると、非常に短い時間ですが、時々この動作が表示されます。そのため、非常に高速なマシンでは見にくいと思います。ただし、サードパーティの .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

アプリケーションで同じ問題が発生し、問題を修正するために Form-Load Function の最初の行として次の行を追加しました

this.FormBorderStyle = FormBorderStyle.None;

于 2016-03-05T07:14:10.450 に答える
1

メインの UI スレッドを遅くする何かがある場合、スレッドが再び応答するまで、Windows は既定値を使用してフォームを描画します (少なくとも Vista/Windows 7 の DVM の世界では)。フォームが最初に表示されたときに、UI スレッドが他のスレッドで待機していないこと、または重い処理を行っていないことを確認してください。

于 2011-01-12T18:26:19.630 に答える
0

Load、コンストラクター、または Shown で FormBorderStyle を変更するかどうかによって異なります。コンストラクターで行うのが最善です (InitializeComponents メソッド)。

于 2011-01-12T12:35:44.623 に答える