2014-10-13 2 views
0

ОК, я около 1 недели в программировании на C# когда-либо ... Я пишу приложение GUI, которое имеет две формы. Form1 является основной формой и имеет довольно много кодов, которые прекрасно работают. Form2 должен быть запущен, когда Form1 обрабатывает исключение.Как запустить form2 из form1 в C#?

Form1 и Form2 созданы в VS Solution Explorer, поэтому они не являются кодом, созданным «на лету».

В моем Form1.cs ...

namespace Launcher 
{ 
    pubic 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() выскочит новый вид2, а не тот, который я определил в обозревателе решений. Я думаю, что это связано с новой строкой Form() выше, но если у меня нет этой новой строки Form(), компилятор жаловался на Form2.Show() .. Невозможно получить доступ к нестационарному методу «показать» в статическом контекст.

Любая идея?

ответ

0

Вы на самом деле не создает Form2

Ваш код

Form Form2 = new Form(); 

Если вероятно

Form2 form2 = new Form2(); 

или заменить Form2 с реальным именем вашего form2.

В C#, мы создаем экземпляры объекта (в вашем случае объект форма) по следующему синтаксису

ObjectName yourVariableName = new ObjectName(); 

Затем мы можем обратиться к этому объекту с помощью «yourVariableName». , например.

yourVariableName.Show(); // Show the form 
+0

Да, именно так. Огромное спасибо. – user3023351

Смежные вопросы