0

我是 C# 新手(从 Java 切换),我在理解 C# 中的 GUI 时遇到了一些麻烦

生病只是粘贴我的代码,让它解释大部分。

主类:

 Frame frame;
 keepRunning = true;

 public GraphicsComponent()
 {
     frame = new Frame();
     frame.Show();
 }

 public void run()
 {
    while (keepRunning)
    {
       Console.WriteLine("Running");
    }
 }

 public static void Main()
 {
    GraphicsComponent gameComponent = new GraphicsComponent();

    gameComponent.run();
}

使用 frame.Show() 方法,它会出现和消失一会儿。但是“运行”循环正在运行。

我看到的另一种方法是另一种称为 ShowDialoge() 的方法,它使窗口保持打开状态,但阻止其余代码运行,直到它关闭。

我想使用它的方式基本上是 GUI 在 Java 中的工作方式。我可以在其余代码中根据需要引用对象(及其组件)。

多谢!

编辑:有很多混乱,所以这是我的 Frame 类:

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

    private void Form1_Load(object sender, EventArgs e)
    {

    }
}
4

1 回答 1

1

启动 winforms 应用程序的正常方法是通过 file->new winforms project。执行此操作时,您将获得“Program.cs”,其中包含您的 Main 方法 - 应用程序的入口点。从那里你有这样的代码:

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new ConfigForm());
    }

在这个例子中,我启动了一个新的“ConfigForm”,它是一个表单,并在它的 ctor 中包含一些看起来像这样的代码:

    public ConfigForm()
    {
        InitializeComponent();

        // Other init work here

    }

我通过右键单击项目并添加新表单来创建表单。

您可能想研究该Application.Run方法,请参见此处。您可以指定一个“主窗体”,它将成为在应用程序期间运行的主窗体,以及在关闭时结束应用程序,或者您可以根据需要指定其他选项。也许最简单的解决方案是启动一个主窗体,并且由于该窗体在应用程序期间处于活动状态,因此您可以在该窗体内启动其他长时间运行的代码。如果您希望一直执行某种后台操作的代码,那么您可能希望在它自己的线程中触发它。但是,线程很难,所以如果您不熟悉 c# / .net,除非您需要,否则我会尽量远离线程。

于 2012-11-13T08:26:48.787 回答