c# - 分离程序和设计逻辑(C# Winforms项目结构)
问题描述
我对 Visual Studio (2019) 和 WinForms 有点陌生。我目前正在尝试将这两个类分开:一个用于表单设计,一个用于项目逻辑。
static class Program {
static void Main() {
Application.SetHighDpiMode(HighDpiMode.SystemAware);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
// more logic
}
}
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
// design logic
}
目前,我很难在Program
和之间传输数据Form1
。我已经尝试创建公共成员来交换这些信息,但我不知道如何访问它(因为表单是用Application
class 实例化的。
我考虑过保持Program
原样并将所有项目代码移至Form1
. 将类替换Application
为表单的实例化会导致程序不显示表单并提前终止。
Form1 foo = new Form1();
有没有办法将程序和设计逻辑分开,或者我应该把所有的逻辑都放进去Form1
?
感谢您的帮助。
解决方案
Program
通常只是启动应用程序的引导类。你通常不会在那里保留太多的逻辑。
尽管如此,您必须始终使用Application.Run
消息循环来处理系统消息,例如鼠标和键盘输入。
但是你仍然可以foo
这样使用:
Application.Run(foo);
推荐阅读
- python - 如果两个文件的列值相同,则合并它们的行
- pyqt5 - 如何从pyqt5中的单选按钮获取选中的组单选的ID
- selenium - 为什么建议在自动化测试中为每个测试保持干净的浏览器状态?
- javascript - 添加新项目时的角度问题
- steam - Steam Api:如何获取当前游戏玩家?
- sql - cakephp3 ORM中带有DISTINCT的SQL案例查询
- sidekiq - 如何检查与 sidekiq 队列相关的所有进程是否已执行?
- sql - 使用 where 子句选择不同值的 id
- java - 在 Google Play 控制台上更改应用程序的代码版本
- laravel - 我想使用控制器更改语言字符串值。如何动态生成本地化字符串文件?