C# 如何让类在Win Forms应用程序中首先运行

C# 如何让类在Win Forms应用程序中首先运行,c#,.net,winforms,startup,main,C#,.net,Winforms,Startup,Main,我需要在应用程序启动时运行一个名为StartUp.cs的类。我希望该类将值分配给另一个名为MyAppSettings.cs的类。现在,当窗体FRMMainCole加载时,我希望它从设置中读取值,因为它会影响窗体FRMMainCole上的控件。我已经尝试了几种方法,并意识到我需要帮助。如果您查看Program.cs,您将看到如下内容: [STAThread] static void Main() { Application.EnableVisualStyle

我需要在应用程序启动时运行一个名为StartUp.cs的类。我希望该类将值分配给另一个名为MyAppSettings.cs的类。现在,当窗体FRMMainCole加载时,我希望它从设置中读取值,因为它会影响窗体FRMMainCole上的控件。我已经尝试了几种方法,并意识到我需要帮助。

如果您查看
Program.cs
,您将看到如下内容:

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

您只需在
Application.EnableVisualStyles()上面添加StartUp.cs调用

作为注释状态-发布一些您尝试过的代码,但是,看看下面是否是您需要的

public class InitialiseSettings
{
    public static void Initialise()
    {
        //Code to run here
    }

    public InitialiseSettings()
    {

    }
}

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

        //Instantiate an object here of the class or call a static function of that class etc etc
        InitialiseSettings settings = new InitialiseSettings();
        InitialiseSettings.Initialise();

    }

    private void Form1_Load(object sender, EventArgs e)
    {
        //Or you could do it here - before the form is displayed
    }
}
也可以在表单实例化之前调用类(Program.cs)

静态类程序
{
/// 
///应用程序的主要入口点。
/// 
[状态线程]
静态void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//在这里调用类
Application.Run(新Form1());
}
}

在修改Program.cs文件时,您可能还需要向
StartUp
类添加静态void
Main()
方法,并将其作为项目的起点。这将使您能够最终控制应用程序的启动方式

可以在项目设计器的应用程序页面中设置启动对象。请注意,这也意味着您将无法使用默认的winform应用程序框架。但是如果你想对你的应用程序设置进行更多的控制,那么这可能是最好的选择


有关更多信息,请参阅。

错误的代码部分是

//Set Initial Settings 
MyAppSetting MyAppSetting = new ChessStrategyGame.MyAppSetting(); 
这样,每次都会创建一个新对象

解决方案: 如果您将设置类“MyAppSettings.cs”设置为静态类,它将对您有所帮助。 通常,设置类创建为静态类,这样您可以一次性设置值,并可以通过应用程序访问属性/值

e、 g


我认为你需要发布你的代码,这样我们就可以了解你到目前为止尝试了什么。用这种方式向您指出解决方案可能更容易。是的,然后发布您尝试过的代码。也。让问题更清楚一点,我无法理解这里是表单加载方法private void frmmanaconsole_load(对象发送者,EventArgs e){CreateGroupBox();//设置初始设置MyAppSetting MyAppSetting=new ChessStrategyGame.MyAppSetting();movesToolStripMenuItem.Checked=MyAppSetting.ShowMoves;}您有一个
StartUp.cs
来为
MyAppSettings.cs
分配一些值吗?从哪里获取这些值?
//Set Initial Settings 
MyAppSetting MyAppSetting = new ChessStrategyGame.MyAppSetting(); 
[STAThread]
static void Main()
{
    // create object of startup class and call initialize method
    StartUp newStartUp = new StartUp();
    newStartup.Initialize();

    Application.Run(new Form1());
}


StartUp.cs
----------
public class StartUp
{

    public void Initialize()
    {
        MyAppSettings.ShowMoves = true;    
    }

}

MyAppSettings.cs
----------------
public static MyAppSettings
{
    public static bool ShowMoves {get; set;}
}

Form1.cs
--------
private void Form1_Load(object sender, EventArgs e)
{
    CreateGroupBox();

    //Set Initial Settings 
    movesToolStripMenuItem.Checked = MyAppSetting.ShowMoves;
}