在我的Windows窗体应用程序中,我希望提供不同的“窗口模式”(为了简单起见,我们只需将它们称为大小)。这意味着,打开多个表单后,我单击一个按钮,所有表单都切换到小模式(不同的表单布局,不同的内容,大小......)。我点击另一个按钮,它们都切换到大模式。
我计划通过为每个表单创建多个资源文件来执行此操作,每个表单都包含其中一个模式的设置。我会有“MainForm-Large.resx”和“MainForm-Small.resx”,我想我可以用一些自定义逻辑加载和应用其中一个。
但是,在InitializeComponent()
中,创建了ComponentResourceManager
,负责加载资源文件。我可以从它派生并覆盖GetResourceFileName()
方法(这显然足以满足我的需要),但是我仍然不能在我的表单的Designer中使用它,因为资源管理器的实例化发生在里面自动生成的代码。编辑自动生成的代码当然不明智......
忘记InitializeComponent()
方法并在我的另一个函数中重新应用所有属性也是不明智的。遍历每一个控件和属性都是一个单调乏味,不可机械化(缺少对设计器进程的攻击)任务 - InitializeComponent()
执行完美的任务。
如何在运行时重新加载和重新应用资源文件 ?