你如何在C#中打开一个新窗口

时间:2012-02-26 22:09:10

标签: c# .net wpf

我正在创建一个Kinect应用程序,并希望从'MainWindow.xaml.cs'文件中打开一个名为'Help'的新窗口。

我尝试使用以下代码:

// The commented code is what I have tried.
public static void ThreadProc()
{
     // Window Help = new Window();
     //Application.Run(new Window(Help);    

     Application.Run(new Form()); 
}

private void button1_Click(object sender, EventArgs e)
{

    System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(ThreadProc));

    t.Start();
}

4 个答案:

答案 0 :(得分:7)

显示一个窗口只需要调用其Show方法。

但是,保持应用程序运行需要调用Application.Run。如果您将此方法传递给表单,则会为您调用Show

但是,如果您已经有一个正在运行的应用程序,则可以执行new MyForm().Show()

之类的操作

我强烈怀疑您不需要为新窗口创建新线程和Application。你不能只使用:

private void button1_Click(object sender, EventArgs e)
{
    new Form().Show();
}

答案 1 :(得分:2)

我不明白为什么你在那里运行应用程序,但通常你通过创建一个实例和showing来打开一个窗口。

var window = new Help(); // Help being the help window class
window.Show();

此外,在后台线程中,它可能会在控制间通信方面造成麻烦。通常,您只想在UI线程上创建和访问UI元素。要将任何操作移动到UI线程,您可以使用UI线程的Dispatcher。另见:Threading Model

答案 2 :(得分:0)

如果您需要自己的,只需在项目中添加一个新表单,或者从stratch创建自己的表单并调用

myForm.Show()

答案 3 :(得分:0)

键入以下代码以创建并显示新窗口:

//When I type Application1, that is the name of your application
...
Window Application1 = new Window();
Application1.Show;
...

不客气!