显然.NET的monthcalendar在不同的平台上呈现不同。 Vista上的日历比XP日历更宽。
我想让日历在所有平台上都能很好地精确地匹配。 有没有办法做到这一点,而不必测量和硬编码不同的宽度?
…………..
编辑/更正:日历似乎根据您select的主题呈现不同:
FileSystemWatcher类 – 简单的问题
设置Form.KeyPreview = true的缺点?
Windows进程和它连接到的IP地址
c#winforms:确定程序的第一次运行
C#同步进程启动
如何弥补?
Windows服务打印PDF文件
如何在Windows上使用.Net构buildiphone应用程序?
每24小时创build文件取决于计时器
这是预期的行为。 如果您不希望受主题的影响,请完全禁用主题(即不要执行命令Application.EnableVisualStyles(); )。 否则,不同的主题总是会产生不同的外观(正如他们打算的那样)。 如果您想要始终适合控件,请使用更加流畅的布局,并使用锚点和对接。
看起来MonthCalendar控件的维度在运行时显示(如表单)时会正确更新。
使用例如表单的Shown事件来了解何时更新维度。
您还可以将表单的AutoSize属性设置为true ,将AutoSizeMode为GrowAndShrink以使表单自动适合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] 举报,一经查实,本站将立刻删除。