Невозможно открыть вторую форму - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь открыть вторую форму, используя приведенный ниже код. Это должно работать. Но что-то случилось с моим проектом.

Form2 newForm = new Form2();
newForm.Show();

Использование упомянутого кода показывает ошибку , как показано на рисунке. Я добавил вторую форму (Форма 2). В чем может быть проблема?

Ошибка: The type or namespace name 'Form2' could not be found (are you missing a using directive or an assembly reference?)

Ответы [ 3 ]

2 голосов
/ 08 ноября 2019

Необходимо либо убедиться, что оба находятся в одном и том же пространстве имен, либо добавить оператор using в Form1.cs.

Таким образом, у вас, вероятно, есть что-то вроде:

namespace TestFormsApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Form2 newForm = new Form2();
            newForm.Show();
        }
    }
}  

и

namespace TestFormsApp_Different
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
    }
}  

Либо измените пространство имен этих двух на одно и то же, либо добавьте usingна Form1.cs примерно так:

using TestFormsApp_Different

namespace TestFormsApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Form2 newForm = new Form2();
            newForm.Show();
        }
    }
}

Вам придется решить, какой подход вам больше подходит. Оба имеют смысл в разных ситуациях, но это уже другая тема.

0 голосов
/ 08 ноября 2019

Form2 находится в другом пространстве имен, чем Form1. Вам необходимо использовать директиву using.

Псевдокод

// 1.st file, where the Form1 is declared:

// Place the using directive
using A2;

namespace A1
{
  public partial class Form1 : Form
  {
    public void ShowForm2()
    {
      Form2 newForm = new Form2();
      newForm.Show();

      // It works without the using directive aswell, while using following:
      A2.Form2 newForm = new A2.Form2();
      newForm.Show();
    }
  }
}

// 2.nd file, where the Form2 is declared:
namespace A2
{
  public partial class Form2 : Form
  {
    // Anything..
  }
}
0 голосов
/ 08 ноября 2019

вы можете попытаться открыть форму 2 в случае формы 1.

двойной щелчок по форме 1 и событие onload Load (отправитель объекта, ...)

 private void Form1_Load(object sender, EventArgs e)
{
    Form2 form2 = new Form2();
    form2.Show();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...