如何在 .designer.cs 文件中引用常量字符串?
一个直接的答案是在我的 .cs 文件中创建一个私有字符串变量,然后编辑 Designer.cs 文件以使用此变量而不是硬编码字符串。但是设计者不喜欢这样抛出错误。我理解为什么这行不通,但我不确定最好的选择是什么。
如果我的每个 UI 控件都只有文本作为占位符,那么我只需要在运行时覆盖所有文本属性吗?这样我就失去了在设计器中看到一切的好处。
我只是想弄清楚当未来事情发生变化时如何将干扰降到最低。谢谢。
这些*.designer.*
文件由 Visual Studio 生成。除非您真的必须这样做,否则您根本不想手动修改它们,因为 Visual Studio 有时可能会重新生成它们并删除您的更改。
您真正需要做的是将常量字符串视为您希望表单设计器可以使用的资源,以便在生成代码时使用该资源。
在 Visual Studio 中有几种方法可以完成此操作。最简单的可能是通过控件的数据绑定。为了演示,将标签控件放在窗体上并查看控件的属性。如果按名称对属性进行排序,则列表顶部将有两个属性用括号括起来: ApplicationSettings
和DataBindings
。如果你把它们拉下来,你会看到它们都有绑定到Text
标签属性的选项。使用这些,您可以将“常量字符串”放在应用程序的设置文件中并通过ApplicationSettings
属性绑定它或在任何数据源中并通过DataBindings
属性绑定它。然后表单设计器将为您生成适当的代码。
我并不完全清楚你想要实现什么,但通常如果你想避免字符串都被硬编码到设计器 .cs 文件中,你可以使用一个资源文件,在启动时会从该文件中加载字符串。
如果您将表单的“可本地化”属性设置为“真”,我相信一切都会自动出现在资源中。另一方面,我远非 Windows 窗体方面的专家,所以在你完成所有这些工作之前,请多加注意 :)
你的第二种方法是最好的选择。因为你不能假设设计师总是会保留你的变化,而且很多时候它只会把它们吹走。您将希望在Page_Init
事件方法中进行控制更改。这可能允许您的更改显示在设计器中。
http://msdn.microsoft.com/en-us/library/system.web.ui.control.init.aspx
这样,您可以在您控制的实际代码隐藏类中保持常量,并且控件将以您想要的方式启动,您可以控制您想要更改的内容。
更新:抱歉没有意识到这是 WinForms。在 WinForms 中实际上更容易,因为您只需在调用控件初始化后立即在构造函数中注册您的控件。
你想解决什么问题?如果您尝试实现本地化,请查看 .NET 和卫星程序集附带的本地化功能。
如果您尝试解决自定义问题,请使用设置编辑器查看 .NET 中可用的自定义选项。
为什么需要使用常量字符串?