代码之家  ›  专栏  ›  技术社区  ›  TheSean

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

  •  1
  • TheSean  · 技术社区  · 17 年前

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

    一个直接的答案是在我的.cs文件中创建一个私有的字符串变量,然后编辑designer.cs文件来使用这个变量,而不是硬编码字符串。但设计师不喜欢这样会抛出一个错误。我明白为什么这行不通,但我不知道最好的选择是什么。

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

    我只是想知道,当未来情况发生变化时,如何使干扰最小。谢谢。

    4 回复  |  直到 17 年前
        1
  •  5
  •   Joel Coehoorn    17 年前

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

    您真正需要做的是将一个您希望对窗体设计器可用的资源想象成常量字符串,这样当它生成代码时,它就会使用该资源。

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

        2
  •  4
  •   Jon Skeet    17 年前

    我不太清楚你想实现什么,但是通常如果你想避免所有的字符串都硬编码到designer.cs文件中,你可以使用一个资源文件,在启动时从中加载字符串。

    如果您将表单的“可本地化”属性设置为“真”,我相信一切都将自动在资源中结束。另一方面,我远不是Windows窗体方面的专家,所以请用一小撮盐来处理所有这些问题,直到您能使其正常工作:)

        3
  •  2
  •   Nick Berardi    17 年前

    第二种方法是最好的。因为你不能想当然地认为设计师总是会保留你的变化,而且经常会把它们吹走。您将要在 Page_Init 事件方法。这可能允许您的更改显示在设计器中。

    http://msdn.microsoft.com/en-us/library/system.web.ui.control.init.aspx

    这样,您就可以在控制的实际代码隐藏类中保持常量,并且控制将以您想要的方式启动,您只需控制想要更改的内容。

    更新: 抱歉,没意识到这是Winforms。实际上,在WinForms中更简单,因为您只需在调用控件初始化后立即在构造函数中注册控件。

        4
  •  1
  •   Dave Van den Eynde    17 年前

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

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

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

    推荐文章