Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#designer.cs代码中使用常量字符串?_C#_Constants_Designer - Fatal编程技术网

如何在C#designer.cs代码中使用常量字符串?

如何在C#designer.cs代码中使用常量字符串?,c#,constants,designer,C#,Constants,Designer,如何在.designer.cs文件中引用常量字符串 一个简单的答案是在my.cs文件中创建一个私有字符串变量,然后编辑designer.cs文件以使用该变量,而不是硬编码字符串。但是设计师不喜欢这样,会抛出一个错误。我理解为什么这样做行不通,但我不确定最好的选择是什么 如果我的每个UI控件都只有文本作为占位符,那么我只需要在运行时覆盖所有文本属性?这样我就失去了在设计师身上看到一切的好处 我只是想弄清楚,当未来情况发生变化时,如何尽量减少干扰。谢谢。我不完全清楚您想要实现什么,但是通常,如果您希

如何在.designer.cs文件中引用常量字符串

一个简单的答案是在my.cs文件中创建一个私有字符串变量,然后编辑designer.cs文件以使用该变量,而不是硬编码字符串。但是设计师不喜欢这样,会抛出一个错误。我理解为什么这样做行不通,但我不确定最好的选择是什么

如果我的每个UI控件都只有文本作为占位符,那么我只需要在运行时覆盖所有文本属性?这样我就失去了在设计师身上看到一切的好处


我只是想弄清楚,当未来情况发生变化时,如何尽量减少干扰。谢谢。

我不完全清楚您想要实现什么,但是通常,如果您希望避免将所有字符串硬编码到designer.cs文件中,您可以使用一个资源文件,在启动时将从该文件加载字符串


如果您将表单的“localizable”属性设置为“true”,我相信所有内容都会自动进入资源。另一方面,我对Windows窗体还不是很在行,所以在你让它工作之前,先把这一切都放在心上:)

我并不完全清楚你想要实现什么,但通常如果你想避免字符串都硬编码到designer.cs文件中,您使用的资源文件将在启动时从中加载字符串


如果您将表单的“localizable”属性设置为“true”,我相信所有内容都会自动进入资源。另一方面,我对Windows窗体还不是很在行,所以在它正常工作之前,请少管闲事:)

你想解决什么问题?如果您试图实现本地化,请查看.NET和卫星程序集附带的本地化功能

如果您试图解决自定义问题,请使用设置编辑器查看.NET中可用的自定义选项


为什么需要使用常量字符串?

您想解决什么问题?如果您试图实现本地化,请查看.NET和卫星程序集附带的本地化功能

如果您试图解决自定义问题,请使用设置编辑器查看.NET中可用的自定义选项


为什么需要使用常量字符串?

第二种方法是最佳选择。因为你不能假设设计师总是会保留你的更改,而且很多时候它只是把它们吹走。您需要在
Page\u Init
事件方法中更改控件。这可能允许您的更改显示在设计器中

通过这种方式,您可以在您控制的实际代码隐藏类中保持常量,并且这些控件将按照您想要的方式启动,您可以只控制您想要更改的内容


更新:很抱歉,我没有意识到这是WinForms。在WinForms中,这实际上更容易,因为在调用控件初始化之后,您只需在构造函数中注册控件。

您的第二种方法是最佳选择。因为你不能假设设计师总是会保留你的更改,而且很多时候它只是把它们吹走。您需要在
Page\u Init
事件方法中更改控件。这可能允许您的更改显示在设计器中

通过这种方式,您可以在您控制的实际代码隐藏类中保持常量,并且这些控件将按照您想要的方式启动,您可以只控制您想要更改的内容


更新:很抱歉,我没有意识到这是WinForms。在WinForms中,这实际上更容易,因为在调用控件初始化之后,您只需在构造函数中注册控件。

Visual Studio生成
*.designer.*
文件。您根本不想手动修改它们,除非您真的必须这样做,因为VisualStudio有时可能会重新生成它们并删除您的更改

您真正需要做的是将常量字符串视为表单设计器可以使用的资源,以便在生成代码时使用该资源


在VisualStudio中有几种方法可以实现这一点。最简单的方法可能是通过控件的数据绑定。要演示,请在窗体上放置一个label控件,并查看该控件的属性。如果按名称对属性进行排序,则列表顶部将有两个属性括在括号中:
ApplicationSettings
DataBindings
。如果将它们向下拉,您将看到它们都有绑定到标签的
Text
属性的选项。使用这些设置,您可以将“常量字符串”放入应用程序的设置文件中,并通过
ApplicationSettings
属性将其绑定,也可以放入任何数据源中,并通过
DataBindings
属性将其绑定。然后表单设计器将为您生成适当的代码。

Visual Studio将生成
*.designer.
文件。您根本不想手动修改它们,除非您真的必须这样做,因为VisualStudio有时可能会重新生成它们并删除您的更改

您真正需要做的是将常量字符串视为表单设计器可以使用的资源,以便在生成代码时使用该资源

在VisualStudio中有几种方法可以实现这一点。最简单的方法可能是通过控件的数据绑定。要演示,请在窗体上放置一个label控件,并查看该控件的属性。如果按名称对属性进行排序,则列表顶部将有两个属性括在括号中:
ApplicationSettings
DataBindings
。如果你把它们拉下来,你会看到它们