1

我将 Windows 应用程序构建为 POS 系统,并且我想添加一个功能,让用户在 Windows 中添加新按钮。因此,在用户输入商品名称和价格等信息后,应用程序将生成创建新按钮的代码,并将该代码添加到 MainForm.cs 和 MainForm.Designer.cs 中。

但是,在我停止应用程序并重新运行已编译的 exe 之前,源代码中的更改不会生效。是否可以在应用程序仍在运行时自行重建?(即用户在输入信息后可以立即看到新按钮出现在窗口上)

我试过使用 Application.Restart(); 和 this.Refresh();,但它没有用。

4

3 回答 3

6

您在这里没有使用正确的方法。

您不应该根据用户输入修改应用程序的代码。
相反,将用户输入的数据保存在数据库或文件中,并使用此信息动态显示按钮。

于 2012-12-12T10:00:06.667 回答
0

我认为这是可能的……但也有局限性。您可以创建一个 AppDomain 并加载一个 dll 代码(此 dll 包含您的应用程序表单)。然后,您卸载应用程序域,构建 dll 并重新创建一个新的 AppDomain。

当然,您必须关闭您所在的窗口,并且拥有一个与简单的 WinForms 应用程序完全不同的 DLL 架构。

例如,这是我推荐用于自动更新的那种东西

于 2012-12-12T10:01:56.010 回答
0

总之,不——因为重建应用程序会替换其磁盘上的可执行映像文件,该文件通常被正在运行的进程锁定。

Visual Studio 和其他 IDE 支持“编辑并继续”,它允许在程序等待断点时在运行时替换代码,但仅限于少数情况(例如修改现有方法中的代码)。对于批发功能或 GUI 更改来说,它不够灵活(如果您使用的是 XAML 资源,那是完全不可能的)。

如果您想要您正在寻找的那种灵活性,那么您必须深入挖掘支持这些特性的老式大型机式系统(例如 IBM Z 系列)。

于 2012-12-12T10:03:19.010 回答