【问题标题】:Changed label text on form, designer shows new text, running program shows old text更改表单上的标签文本,设计器显示新文本,运行程序显示旧文本
【发布时间】:2013-08-10 17:23:12
【问题描述】:

我更改了 Windows 窗体上标签的文本属性。表单在 VS 2010 表单设计器中显示时会显示正确的新标签。我也改变了字体的颜色。

当我运行程序时,窗口显示旧文本值而不是新文本值。表单在标签上显示新的字体颜色。

源代码中似乎没有出现旧文本值。旧的文本值还隐藏在哪里?

我清理并重建解决方案,但没有任何改变。

【问题讨论】:

  • 请也发布您的代码。
  • 尝试完全删除您的bin 文件夹。还可以尝试查找对标签的所有引用:可能是从资源文件或类似的东西加载文本。
  • 您还可以检查<form name>.Designer.cs 文件中的.Text.BackColor 属性。
  • 感谢两位的建议。这是一个旧的 vb.net 项目。生成的设计器代码似乎嵌入在 Form1.vb 代码中,而不是单独的分部类文件中。 Text 属性设置为新值。我无法确定旧文本值甚至存在于何处。我确实删除了 bin 和 obj 文件夹。我确实查找了对标签名称的所有引用,但没有发现任何问题
  • 是否有一些隐藏的资源文件或注册表存储保留了旧的文本值?该程序似乎将新值设置到 .text 属性中。

标签: winforms visual-studio-2010 designer


【解决方案1】:

结语:

“Brian”和“Blogbeard”在建议隐藏资源文件方面都有正确的方向。

在代码执行的早期,对一个没人知道的晦涩子系统进行了方法调用。那个子系统原来是一个已经失效的语言翻译模块,它应该将所有标签从母语翻译成目标语言。

它被配置为将原始标签及其翻译保存在 IDE 范围之外的文件中。如果翻译器在其文件中找到标签名称,则完全忽略表单本身的更改。

将表单内容移动到另一个包实际上禁用了翻译器。

优雅的解决方案变成了三行更改,删除了对翻译器的方法调用。 (应用程序中不再需要它)

【讨论】:

    【解决方案2】:

    一位同事观察到这是将项目从 VS2005 转换为 vs2008 到 VS2010 的产物,并提出了一种“蛮力”纠正措施。

    它确实有效。

    1) 在项目中新建一个空白表单。

    2) 在原始表单中,使用表单设计器的“编辑”菜单,使用“全选”和“复制”操作。这会将所有表单对象复制到剪贴板中。

    3) 将剪贴板粘贴到空白表单中。

    4) 将旧表单中的(大部分)程序代码复制到新表单中,不包括表单设计器生成的任何内容。

    5) 从项目中删除旧表单。根据需要进行更改以使用新表单

    不是很优雅,但很适合按时完成。

    谢谢你!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-27
      • 2014-02-13
      相关资源
      最近更新 更多