フォームを表示する方法を混乱させます。 Windowsフォームアプリケーションを作成すると、Showメソッドを明示的に呼び出しなくても、デフォルトのForm1が自動的に表示されます。しかし、別のフォームを表示して見えるようにするには、Showを呼び出すことで可視にする必要があります。Windowsフォームの可視性の問題
なぜこのような違いがありますか?
VSTS 2008 + C#+ .Net 2.0を使用しています。
フォームを表示する方法を混乱させます。 Windowsフォームアプリケーションを作成すると、Showメソッドを明示的に呼び出しなくても、デフォルトのForm1が自動的に表示されます。しかし、別のフォームを表示して見えるようにするには、Showを呼び出すことで可視にする必要があります。Windowsフォームの可視性の問題
なぜこのような違いがありますか?
VSTS 2008 + C#+ .Net 2.0を使用しています。
これは、Form1がアプリケーションのメインフォームになるためです。具体的にはApplication.Run
メソッドに渡され、Form1がメインフォームとして割り当てられたApplicationContext
オブジェクトが作成されます。アプリケーションが起動すると、ApplicationContext
にメインフォームがあるかどうかがチェックされ、そのフォームのVisible
プロパティがtrue
に設定され、フォームが表示されます。
あるいは、コードで表され、これはApplication.Run
です:
public static void Run(Form mainForm)
{
ThreadContext.FromCurrent().RunMessageLoop(-1, new ApplicationContext(mainForm));
}
RunMessageLoop
は、メッセージループを設定するには、別の内部関数を呼び出しますし、その関数に、私たちは次のことを見つける:
if (this.applicationContext.MainForm != null)
{
this.applicationContext.MainForm.Visible = true;
}
これがForm1を示すものです。
これはまた、起動時にForm1フォームが自動的に表示されないようにするためのヒントを提供します。
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// create the form, but don't show it
Form1 form = new Form1();
// create an application context, without a main form
ApplicationContext context = new ApplicationContext();
// run the application
Application.Run(context);
}
VSが生成する "Program.cs"ファイルを見てください。
static class Program {
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main() {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1()); // and especially this line :)
}
}
これは、form1がApplication.Run(new form1())によって呼び出されるメインフォームであるためです。
このコードはprogram.csファイルにあり、どのような形式にでも変更できます。
Ahmed、私が別の新しいFormを作成し、それをForm2 form2 = new Form2()を使って構築すると、form2は決して表示されません。私は、コードがPrograms.csの私のためにVSTSが生成するものと同じだと思うし、Form2がなぜ表示されないのか分からないのですが? – George2
ありがとうございますFredrik、投稿したコードブロックはどこですか? – George2
私はRed Gate's Reflectorを使用しました:http://www.red-gate.com/products/reflector/ –
ショーと可視の違いを真とはどのような違いがありますか? – George2