8

我是 C# 的新手。单击form1中的按钮时,我试图显示一个新表单(form2)。

这是我的代码。

        using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

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

        private void Form1_Load(object sender, EventArgs e)
        {

        }
        private void button5_Click(object sender, EventArgs e)
        {   
            Form2 form2 = new Form2();
            form2.ShowDialog();            
         }
    }
}

错误显示

找不到类型或命名空间名称“Form2”(您是否缺少 using 指令或程序集引用?)

这是我的form2代码。

    using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

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

        private void Form2_Load(object sender, EventArgs e)
        {

        }
    }
}

对于form2,我只是制作设计界面。

我所知道的使用 java 时,我只需要先声明对象。我该怎么办?

4

9 回答 9

5

除非您有任何拼写错误,否则我看不出有任何理由使您的代码失败。我尝试了与您相同的代码,并且在我的机器上运行良好。

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    namespace winapp
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            private void button1_Click(object sender, EventArgs e)
            {
                Form2 frm2 = new Form2();
                frm2.ShowDialog();
            }
        }




    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    namespace winapp
    {
        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }
        }
    }
于 2012-08-02T03:00:17.827 回答
3

找不到类型或命名空间名称“Form2”(您是否缺少 using 指令或程序集引用?)

这意味着您忘记将指向Form2目录的名称空间添加到您的代码中

如果您有一个Form2.cs名为 inside 的目录UI并且该目录在MyForms目录内部,那么整个树将是ProjectName>> MyForms>> UI>>Form2.cs

所以你应该在你的代码中使用这个命名空间

using ProjectName.MyForms.UI;

现在我应该可以轻松地开始显示它了,因为我已经添加了它的位置。

new Form2().Show();

或者,您可以使用:

new ProjectName.MyForms.UI.Form2().Show();
于 2017-12-24T17:32:16.980 回答
1

在 form1 中,您正在使用 Form2 的构造函数:

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

如果你把它改成

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

你应该没事。

于 2012-08-02T02:07:28.107 回答
1

您的代码声称您没有Form1.

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

应该:

 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
于 2012-08-02T02:08:09.300 回答
1

我认为下面一定是您的代码失败的原因。您在 Form1 和 Form2 中都有您的表单,其中 Form2 定义是在另一个命名空间指令中完成的,该指令未集成在 Form1 的命名空间中,除非您覆盖它们,否则您不能为两个命名空间使用相同的命名空间指令名称。

于 2014-05-07T05:49:29.483 回答
1

试试这个代码......

private void button1_Click(object sender, EventArgs e)
{
       Form2 frm2 = new Form2();
       {
          frm2.ShowDialog();
       }
}
于 2017-07-28T06:02:05.487 回答
0
private void button5_Click(object sender, EventArgs e)
{   
  Form2.show()
}
于 2017-07-29T05:49:20.713 回答
0

我的解决方案:

在 Form1 的点击事件中包含您的按钮:

string foobar = "Hello world";
Form2 frm2 = new Form2(foobar);
frm2.ShowDialog();

在表格 2 中:

public Form2(string foobar)
{
    InitializeComponent();
    textbox1.Text = foobar;
}
于 2018-05-14T21:09:42.237 回答
0

对于仍在寻找答案的任何人:

在代码的顶部,添加这个命名空间:

using YourProjectName;

然后,当您希望显示您的表单时,请输入以下内容:

var form = YourProjectName.YourFormName();
form.Show(); // Show form using new variable
于 2021-05-09T11:46:30.943 回答