微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MonthCalendar在不同的平台上平台,更正:主题XP vs Aero主题

显然.NET的monthcalendar在不同的平台上呈现不同。 Vista上的日历比XP日历更宽。

我想让日历在所有平台上都能很好地精确地匹配。 有没有办法做到这一点,而不必测量和硬编码不同的宽度?

…………..

编辑/更正:日历似乎根据您select的主题呈现不同:

FileSystemWatcher类 – 简单的问题

设置Form.KeyPreview = true的缺点?

Windows进程和它连接到的IP地址

c#winforms:确定程序的第一次运行

C#同步进程启动

如何弥补?

如何从一个句子获取网站的URL?

我怎样才能让一个ListView的列自动resize编程?

Windows服务打印PDF文件

如何在Windows上使用.Net构buildiphone应用程序?

每24小时创build文件取决于计时器

这是预期的行为。 如果您不希望受主题的影响,请完全禁用主题(即不要执行命令Application.EnableVisualStyles(); )。 否则,不同的主题总是会产生不同的外观(正如他们打算的那样)。 如果您想要始终适合控件,请使用更加流畅的布局,并使用锚点和对接。

我遇到了同样的问题,发现了一个解决方法

看起来MonthCalendar控件的维度在运行时显示(如表单)时会正确更新。

使用例如表单的Shown事件来了解何时更新维度。

您还可以将表单的AutoSize属性设置为true ,将AutoSizeMode为GrowAndShrink以使表单自动适合MonthCalendar控件。

更新:

有关更多信息,请尝试以下示例

一个MonthCalendar控件放在这样的表单上:

窗体的显示事件添加这个:

public static int CalenderWidth = 0,CalenderHeight = 0; private void Form1_Shown(object sender,EventArgs e) { CalenderWidth = monthCalendar1.Width; CalenderHeight = monthCalendar1.Height; MessageBox.Show("MonthControl width: " + CalenderWidth.ToString() + ",height: " + CalenderHeight.ToString()); }

程序运行时,您会看到一个显示正确尺寸的消息框。 宽度和高度也被放到两个变量中,你可以在程序中的任何地方使用(以一种快速和肮脏的方式,我知道;-)当然,如果你不需要它,你可以省略消息框。

要检查它是真的在尝试更改Windows中的区域设置:将格式更改为例如丹麦语。 再次运行该程序,您将看到宽度已经变小,因为丹麦的MonthCalender控件更小。

关于AutoSize和AutoSizeMode属性,可以使用它们使表单的大小适应MonthCalender控件的大小。 执行此操作:将表单中的两个属性更改为:

现在运行该程序,您将看到窗体的大小会根据MonthCalender控件的大小自动更改:

而已! (请记住切换您的区域格式设置回到原来的)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐