【问题标题】:Calling user created method in Form1 in Main()在 Main() 的 Form1 中调用用户创建的方法
【发布时间】:2015-07-07 13:43:00
【问题描述】:

我的 Form1.cs 中有一个名为 GenerateComboBoxList() 的方法,我想在 main 方法中调用它,以便在启动应用程序时生成组合框的内容。

public void GenerateComboBoxList()
{
     cmbServerDatabase.Items.Add("1");
     cmbServerDatabase.Items.Add("2");
     cmbServerDatabase.Items.Add("3");
}

但是,当我开始在 main 方法中输入 GenerateComboBoxList() 时,智能感知不会接收到它。谁能帮忙解决我哪里出错了?

【问题讨论】:

  • 你能发布更多的方法吗?至少全班
  • 抱歉,与此无关。我假设我可以在我的表单类中创建一个函数,然后我可以在我的主程序类中调用它,只是为了保持 main 有点整洁。
  • 我们如何在没有任何代码的情况下诊断这个问题?告诉我们你做了什么,我们会尝试同样的。否则这个问题将被关闭。
  • 别担心@Patrick Hofman,下面排序的用户。感谢您的帮助。

标签: c# winforms methods


【解决方案1】:

你需要在你的 Main 方法中有一个 Form1 的实例,然后你才能调用你的方法,但是,不要那样做。 而是在你的 Form_Load 事件中调用这个方法或重载OnLoad (参见:this

Program.cs 中的 Main 方法应该只负责指定/加载启动表单。稍后在表单的 Load 事件中,您可以执行以下操作:

private void Form1_Load(object sender, EventArgs e)
{
   GenerateComboBoxList()
}

【讨论】:

  • 谢谢 Habib,感谢您的帮助,帮助我解决了这个问题!
  • 最好覆盖OnLoad而不是自己处理表单事件。
  • 嘿@Chris Dunaway,让我试一试,我会回复你的。干杯哥们。
  • @ChrisDunaway 对于有经验的用户,是的。如果你知道你在做什么。如果您只是初学者,我会使用事件处理程序。
  • 感谢@PatrickHofman 的提醒,我可能会坚持使用事件处理程序,但值得一看。
【解决方案2】:

您可以在表单的构造函数中的 InitializeComponents() 之后执行此操作:

public Form1()
{
    InitializeComponents();
    GenerateComboBoxList();
    ... other things that you want to set on startup
}

附:这里的人们已经建议的其他选项是使用 Form_Load 事件处理程序。

【讨论】:

  • 谢谢 Fabjan,这也有效。我将使用 Habib 的方式,但无论如何我感谢您的帮助!
猜你喜欢
  • 2014-03-26
  • 2011-07-11
  • 2019-03-24
  • 1970-01-01
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-31
相关资源
最近更新 更多