0

プログラムを段階的に実行しましたが、それでも がどこにform.visible設定されているかわかりません。

「Form1.cs」のコードは次のとおりです。

public Form1()
{
    InitializeComponent();
    this.Hide();
}

追加しましthis.Hide();たが、まったく機能しませんでした。

そして、「Program.cs」を次のように変更しました。

Application.Run(new Form1());

に:

Form1 form1=new Form1();
form1.Visible = false;
Application.Run(form1);

ただし、メイン フォームは引き続き表示され、追加してもform1.Enable=false;フォームの表示は停止しません。も追加this.Hide();Form1_Load()てみましたが、機能しましたが、メインフォームが表示され、最終的に非表示になる前に点滅しました。

私は今完全に混乱しています。では、メイン フォームを表示せずに読み込むにはどうすればよいでしょうか。そして、私が電話するまで隠しておきますthis.Show();か?

4

6 に答える 6

2

Application.Run(Form)のドキュメントには、フォームが表示されることが明確に記載されています。したがって、非表示にしておく必要がある限り、そのフォームを Application.Run に渡すべきではありません。必要に応じて、代わりにApplication.Run() (引数なし) またはApplication.Run(context) (カスタム を作成)を使用できる場合がありますApplicationContext

編集:フォームを表示しないように追加したいだけです。フォームを表示しないでください。ここにいる多くのユーザーが、フォームを表示してすぐに非表示にしたり、フォームを表示するコードにフォームを表示しないようにすることをお勧めします。間違ったことをしてからそれを修正するべきではなく、そもそも正しいことを行うべきです。

于 2012-09-01T08:05:02.897 に答える
2

SetVisibleCore メソッドをオーバーライドしない理由:

bool showForm = false;

protected override void SetVisibleCore(bool value)
{    
   base.SetVisibleCore(showForm);
}

これにより、フォームが開く前にフォームが非表示になります。多くのメソッドでは、フォームの .Visible または類似のプロパティが「非表示」に設定される前に、フォームの短いフラッシュが表示されます。

明らかに、「showForm」を再度表示したい場合に true に切り替える別のメソッド、つまり NotifyIcon イベントが必要になります。

于 2012-09-01T08:26:48.483 に答える
2

visibleロードする前にフォームを設定することはできません。次のfalseコードを試してください。

//In Main Function
Form1 form1 = new Form1();
form1.WindowState = FormWindowState.Minimized;
form1.ShowInTaskbar = false;
Application.Run(new Form1());
//In Form Shown
private void Form1_Shown(object sender, EventArgs e)
{
this.Visible = false;
}
于 2012-09-01T07:48:35.760 に答える
1

Opacity物件をお探しかもしれません。IDE からOpacity設定できます。と0.0の間の値を取ることができます。0.01.0

于 2012-09-01T09:11:26.980 に答える
0

あなたはこのようなことを試すことができます:

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);

        var form = new Form1();
        form.DoBeforeShow();
        Application.Run(form);
    }
于 2012-09-01T07:57:28.087 に答える
0

最初に、ユーザーに永続的に表示したいフォームをロードできます。コンストラクターでは、非表示にする必要があるフォームのみを呼び出します。その後、閉じるか非表示にすることができます。

于 2012-09-01T09:58:23.903 に答える