Font-dependent control positioning我想在Vista上使用Segoe UI 9 pt,在Windows XP / etc上使用Tahoma 8 pt。 (实际上,我两个都愿意使用Segoe UI,但是我的用户可能没有安装它。)但是,由于两者截然不同,它们确实使我的表单布局更加混乱。那么...有什么好办法解决这个问题吗?
例如:我有一个
因此,最具体地说,我的问题是:如何在 编辑:我不认为人们理解这个问题。我知道如何根据OS更改字体。我只是不知道该如何处理由此引起的布局问题。 回复ajryan,quick_dry:好的,你们明白了这个问题。我想MeasureString可能有用,尽管我对进一步探索解决此问题的更好方法感兴趣。
拆分控件的问题最明显,例如 我第二次将TableLayoutPanel用于单行内联控件。
我通常将每一列和第一行设置为AutoSize,并将每个子控件的Dock属性设置为Fill in设计器。这样可以使水平布局正确显示。 如果您的文本流到下一行,则没有简单的解决方案。最好使用Graphics.MeasureString / TextRenderer.MeasureText和一些精美的包装逻辑:( 需要在另一个控件中布局一个控件很奇怪。您可能错误地解决了上游问题。您是否可以将标签分成两个标签,并且上下两个标签之间可能靠Windows Forms TableLayout面板? 如果必须根据字体大小定位,可以使用Graphics.MeasureString(" updown之前的字符串",myLabel.Font) 如果您要查找的是字体相关的控件定位,则可能应该重命名该问题。 [edit]您可以处理标签"后半部分"的click事件,并更改该事件的复选框状态。整个事情似乎像一个hack。这种奇怪的控件布局可以解决什么问题?为什么在标签中间需要上下放置? 解决控件的位置问题吗?也就是说,您知道字体X和Y在OS A和OS B上都可以工作,并给出所需的布局以及在这些系统上使用的文本吗? MeasureString方法可能会帮助您以一种不受特定字体限制的方式来设计布局。 float textWidth = graphics.MeasureString(someString,someFont).Width; (是否需要更改文本对齐方式?我也可能会误解这个问题) 首先,可以通过系统库中的OperatingSystem.Platform属性找出要使用的Windows版本。 其次,您可能会将字体设置放在"资源"文件中,并根据某些条件(例如,您的操作系统版本)确定要使用的资源文件。 不过,就我个人而言,我认为最好让您的用户确定他们喜欢的字体,而不是您想要使用的字体。 最后,您可能想看一下WPF,因为这是WPF旨在解决的问题空间之一。 |