gpt4 book ai didi

c# - 修改由 application.run(form1) 创建的表单对象

转载 作者:太空宇宙 更新时间:2023-11-03 20:22:04 25 4
gpt4 key购买 nike

我是 C# 的新手,正在尝试弄清楚如何从另一个类编辑表单。表单是由默认的 VS 方法创建的,如下所示:

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

我在 Form1.cs 文件中创建了一个方法,作为测试如何更新 Form1 中的 label1 字段。方法如下:

public void UpdateLabel(string state = "Changed Text")
{
label1.Text = state;
}

我遇到的问题是 Application.Run 命令没有提供 Form1 类型的命名对象。因此,当我想从 Program.cs 触发 UpdateLabel 方法时,如下所示:

XXX.UpdateLabel();

我没有目标对象来访问表单。如果我手动创建表单,那么我相信这会很好:

Form1 myForm = new Form1();
myForm.UpdateLabel();

使用 Windows 窗体应用程序提供的 Application.Run(Form1),我如何访问正在创建的窗体对象?另外,这是我应该针对此类问题采取的方法,还是有更好的方法?

最佳答案

好吧,你可以用这种方式整合你的最后一个例子......

static void Main() 
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 myForm = new Form1();
myForm.UpdateLabel();
Application.Run(myForm);
}

但让我问你:为什么你的逻辑要求在 Form1 构造函数之外执行此操作?

public Form1()
{
InitializeComponents();
label1.Text = "Changed Text";
}

编辑:按照下面的评论,我认为你应该做这样的事情:

MyApplicationCode appCode;

public Form1()
{
InitializeComponents();
appCode = new MyApplicationCode();

this.Text = appCode.GetFormText();
label1.Text = appCode.GetLabelText();
cmdSave.Enabled = appCode.UserHasSavePermission();
...... // and so on for other decisions on

}

关于c# - 修改由 application.run(form1) 创建的表单对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12897506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com