如何从C#中的form1启动form2?

时间:2014-10-13 22:18:17

标签: c# forms parent-child

好的,我在C#编程约1周... 我正在编写一个有两种形式的GUI应用程序。 Form1是主要形式,并且有相当多的代码可以很好地工作。 当Form1处理异常时,Form2应该被启动。

Form1Form2都是在VS Solution Explorer中创建的,因此它们不是动态创建的代码。

在Form1.cs中......

namespace Launcher
{
    public partial class Form1: Form  
    {  
        // ...  
        private void button2_Click(object sender, EventArgs e)
        {
            try  
            {  
                //some codes  
            }  
            catch (SomeException)  
            {  
                Form Form2 = new Form();  
                Form2.Show();  
            }
        }
    }
}

另外..在Program.cs ..

using System.Windows.Forms;  

namespace LauncherCSharp  
{
    static class Program  
    {
    /// <summary>  
    /// The main entry point for the application.  
    /// </summary>  

        static void Main()  
        {  
            Application.EnableVisualStyles();  
            Application.SetCompatibleTextRenderingDefault(false);  
            Application.Run(new Form1());  
        }
    }
}

问题是.. Form2.Show()会弹出一个全新的Form2,而不是我在解决方案资源管理器中定义的那个。我认为这与上面的新Form()行有关,但如果我没有这个新的Form()行,编译器会抱怨Form2.Show() ..无法访问非静态方法“显示“在静态环境中。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您实际上并未创建Form2

您的代码

Form Form2 = new Form();

应该是

Form2 form2 = new Form2();

或将Form2替换为form2的实际名称。

在C#中,我们通过以下语法创建对象的实例(在您的情况下,对象是表单)

ObjectName yourVariableName = new ObjectName();

然后我们可以使用&#34; yourVariableName&#34;来引用这个对象。 例如

yourVariableName.Show(); // Show the form