8

我的应用程序是用 Visual Studio 2010 Express 创建的,在除 XP 之外的所有 Windows 版本中看起来都很好。

XP 在某些标签的开头添加了一个额外的方形字符。

XP与非XP应用截图对比

所有标签的属性,无论是否显示额外字符,都是相同的:

  • 微软无衬线字体,8.25pt
  • 自动调整大小:真
  • 前景色:ControlText

唯一的区别是位置、宽度,当然还有文本。

似乎与是否使用诸如 Omega 之类的特殊字符无关。它与宽度无关。

形成(应用程序).​​Designer.cs:

这个标签没问题:

        // label22
        // 
        this.label22.AutoSize = true;
        this.label22.Location = new System.Drawing.Point(58, 23);
        this.label22.Name = "label22";
        this.label22.Size = new System.Drawing.Size(20, 13);
        this.label22.TabIndex = 32;
        this.label22.Text = "Ah";

这个标签添加了一个有趣的字符:

        // lblPackCurrUnits
        // 
        this.lblPackCurrUnits.AutoSize = true;
        this.lblPackCurrUnits.Location = new System.Drawing.Point(44, 300);
        this.lblPackCurrUnits.Name = "lblPackCurrUnits";
        this.lblPackCurrUnits.Size = new System.Drawing.Size(14, 13);
        this.lblPackCurrUnits.TabIndex = 17;
        this.lblPackCurrUnits.Text = "◊A";

知道是什么原因造成的吗?

好,好,好!看那里!最后一行有一个有趣的角色! 将代码粘贴到 stackoverflow 中发现了问题!

里面有有趣的角色。只是它们在 Visual Studio 文本编辑器和我尝试过的任何其他编辑器中是不可见的。它们仅在我将它们粘贴到此处时出现!谁创造了它们?

好的,我有我的解决方案:我将手动编辑 Designer.cs 文件。

但我把这个问题留在这里,以便其他人可以从中受益。

4

1 回答 1

6

我怀疑您在设计器中嵌入了字节顺序标记或其他一些 Unicode 标记(例如,零宽度连接器、非连接器或零宽度空间)。这些是完全有效的字符,但 XP 字体没有该字符的表示,因此您会得到方形填充符。

于 2013-06-25T16:42:47.030 回答