在C#中从控制台调用windows窗体

时间:2013-07-14 22:27:56

标签: c#

我正在使用C#.net 4.0 VS 2010。

我在Stackoverflow中复制了以下代码,并确认所有这些都可以使用,但我在调用“Application.Run(new ShoutBox())时遇到语法错误;”错误是“无法找到类型或名称空间'ShoutBox'。”

该项目最初是作为控制台应用程序构建的。我刚刚添加了一个名为ShoutBox的窗体,保存为ShoutBox.cs。我已将代码传输到表单,因此它不会在控制台中显示内容,而是在我创建的Windows窗体的文本框中显示。

我错过了什么?我怎样才能使它发挥作用?

    using System;
    using System.Windows.Forms;

    namespace ChatApp
    {
        class ConsoleApplication1
        {


            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();


                //this one works
                Application.Run(new Form()); // or whatever


                //this one does not work, error on second ShoutBox
                Form ShoutBox = new Form();
                Application.Run(new ShoutBox()); 
            }


        }
    }

仅供参考,这是我的最终工作代码: 此代码创建一个新的Shoutbox表单而不是空白表单。

    using System;
    using System.Windows.Forms;
    using ShoutBox; // Adding this

    namespace ChatApp
    {
        class ConsoleApplication1
        {        
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Form ShoutBox1 = new ShoutBox.ShoutBox(); //Changing this
                Application.Run(ShoutBox1);               //Changing this
            }
        }
    }

我的Shoutbox表格如下:

    using System
    using System.Windows.Forms;
    namespace ShoutBox
    {
        public partial class ShoutBox : Form
        {
    ....

3 个答案:

答案 0 :(得分:5)

ShoutBox是引用Form的变量的名称,不能调用新的ShoutBox()。

您已经在上一行中实例化了表单,现在只需调用

 Application.Run(ShoutBox); 

但是,如果你有一个以这种方式定义的名为ShoutBox的表单

namespace ShoutBox
{
     public partial class ShoutBox: Form
     {
        .....
     }
}

然后你需要在文件的开头添加using声明

using ShoutBox;

或者您只需将ShoutBox.cs文件中使用的命名空间更改为程序主文件中使用的相同命名空间

namespace ChatApp
{
     public partial class ShoutBox: Form
     {
        ....    
     }
}

答案 1 :(得分:0)

你缺少一两件事。

首先,您需要导入ShoutBox所在的命名空间:

using Your.Namespace.Where.ShoutBox.Is.Declared;

在Visual Studio中执行此操作的简单方法是将光标放在单词ShoutBox上的某个位置,然后按 Alt + Shift + F10 或..作为一些比我更有效率的人,按 Ctrl + 。这将打开一个菜单,显示需要包含的命名空间。

此外,如果该命名空间位于另一个程序集中(您提到那个),那么您需要将其添加为项目的引用。

另外,这个:

Form ShoutBox = new Form();
Application.Run(new ShoutBox());

..不正确。我会建议一个关于基本类创建的教程。

答案 2 :(得分:0)

ShoutBox类可能位于不同的名称空间中。

代码Form ShoutBox = new Form();没用,只需要Application.Run(new ShoutBox());