【问题标题】:Where is the Main method in a forms application?表单应用程序中的 Main 方法在哪里?
【发布时间】:2012-02-18 01:17:57
【问题描述】:

我想知道是否有一种方法可以使用 main() 函数创建 GUI 程序(就像在控制台应用程序中一样),所以我在 main() 中创建所有对象并且我可以访问/更改它来自与按钮/文本框等连接的其他功能。甚至可能吗? ;p

请理解我是 GUI 的初学者,我说的东西可能很有趣,但我还是想学习! 谢谢:)

【问题讨论】:

  • 每个 C# 程序以 Main() 方法开头,即使它使用 GUI。他们只是不告诉你这个。 (反正不是直接。)
  • 好吧,但它不像我必须访问名为“Main(”) 的函数,我想在控制台应用程序的“main”中找到一个可以工作的地方,这可能吗? :p
  • 您确实可以访问主目录。看看我下面的答案。
  • 阅读有关 Winforms 编程的书籍或教程。你会给自己带来很多麻烦。

标签: c# user-interface


【解决方案1】:

当你创建 windows 窗体项目(A Gui 之一)时,它有一个主循环——实际上它需要一个。默认情况下,它在 program.cs 中,它会启动您的表单:

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
}

您可能想要的是 Form 构造函数。这是在表单后面的代码中(默认情况下是 Form1.cs),看起来像这样:

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

【讨论】:

  • 以及如何在 main 中创建字符串以便我可以使用文本框阅读它? :P
  • 这个逻辑可能进入 Form1() [表单的构造函数]。我使用可能很松散,因为它属于构造函数之外的函数,但为了演示,您可以执行 String myString = txtMyTextBox.Text,前提是您在表单上有一个文本框并且 id 是“txtMyTextBox”。如果您无法到达那里,则需要备份并从更开始的阶段开始。
  • 嗯,有一个textBox1,有一个String myString = textBox1.Text; (在 main 中)并且在 main 中我确实有这个:'名称'textBox1'在当前上下文中不存在'
  • 再一次,你不需要 Main,你需要 Form1()。 Main 不知道 textBox1,而 form 知道。
  • 哦,谢谢,我现在差不多明白了:P private void button1_Click(object sender, EventArgs e) { myString = "xxxxxx"; }
【解决方案2】:

一个 WinForm 应用程序从 main 启动

static void Main()
{
    Application.Run(new Form1());
}

你想在main做任何事都可以在这里做

【讨论】:

    【解决方案3】:

    Main 方法在 Program.cs 文件中的 Program 类中

        static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            public static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
        }
    

    对于你想要的,我会使用 Form1 类的构造函数:

            public Form1()
            {
                InitializeComponent();
                //your code
            }
    

    或者理想的表单加载事件:

            private void Form1_Load(object sender, EventArgs e)
            {
                //your code
            }
    

    【讨论】:

      猜你喜欢
      • 2011-06-13
      • 2017-02-13
      • 2019-10-14
      • 2015-07-08
      • 1970-01-01
      • 1970-01-01
      • 2015-02-15
      • 2017-11-02
      相关资源
      最近更新 更多