月历日历上不同的宽度平台,校正:主题XP与Aero主题

如何解决月历日历上不同的宽度平台,校正:主题XP与Aero主题

| 显然,.NET monthcalendar在不同平台上的呈现方式有所不同。 Vista上的日历比XP日历宽。 我想让日历在所有平台上都能很好地契合。 有没有一种方法可以执行此操作,而不必测量和硬编码不同的宽度? .............. 编辑/更正: 日历似乎根据您选择的主题而有所不同: 如何弥补呢?     

解决方法

那是预期的行为。如果不想受到主题的影响,请完全禁用主题设置(即,不要执行命令“ 0”)。否则,不同的主题将始终为控件产生不同的外观(如它们的意图一样)。如果您想随时插入控件,请使用锚点和停靠点使用更流畅的布局。     ,我遇到了同样的问题,找到了解决方法: 似乎在运行时显示dimensions1ѭ控件的尺寸(如以表单形式)时,其尺寸已正确更新。 使用例如表单的
Shown
事件来知道何时更新尺寸。 您还可以将窗体的
AutoSize
属性设置为
true
,并将
AutoSizeMode
属性设置为
GrowAndShrink
,以使窗体自动适合
MonthCalendar
控件。 更新: 有关更多详细信息,请尝试以下示例: 将MonthCalendar控件放在这样的窗体上: 在表单的Shown事件中添加以下内容:
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控件的大小自动更改: 而已! (请记住,将您的“地区”格式设置切换回原始设置) ;-)戴夫     ,好吧,我发现了这个: http://www.eggheadcafe.com/software/aspnet/34174436/vista-monthcalendar-control.aspx   再次欢迎您来到Microsoft Manage Newsgroup,我是叶志新,是我   很高兴在这个问题上与您合作。      MonthCalendar控件由操作系统呈现,因此呈现   XP和Vista之间有所不同。您可以使用   Environment.OSVersion.Version.Major属性确定操作系统版本,   并调用MontheCalendar.GetPreferredSize()方法以检索首选对象   Vista的大小,以便您可以以编程方式更改表单的大小   使它适合MonthCalendar。同时,打开AutoSize属性   将该表单的值设置为true,以便在Vista上调整该表单的大小,并确保   MonthCalendar的Dock属性设置为Dock.None。      供您参考的示例代码:      私有void Form1_Load(对象发送者,EventArgs e)   {      如果(Environment.OSVersion.Version.Major> = 6)   {   this.Size = this.monthCalendar1.GetPreferredSize(new   尺寸());   }   }      请尝试我的建议,让我知道这对您是否有意义。如果   您有任何疑问或疑虑,请随时让我知道。      最好的祝福,   叶志新   Microsoft托管新闻组支持团队 似乎有一种专门针对此问题设计的方法:
this.monthCalendar1.GetPreferredSize(new Size());
但是,我在多台计算机上测试了此方法,无论主题或操作系统如何,该方法始终为您提供178 px的首选宽度。 (据我测试)。 ! 因此,受够了,我只想给日历添加178的宽度,并计划购买商业控制之类的东西。 感谢您的所有帮助...     ,我的应用程序正在使用Application.EnableVisualStyles(); 我在CreateHandle()方法中禁用了日历的视觉样式:
public class MonthCalendarBuffered : MonthCalendar
{
    protected override void CreateHandle()
    {
       Application.VisualStyleState = VisualStyleState.NoneEnabled;     
       // disables Application.UseVisualStyles
       base.CreateHandle();
       // restore setting
       Application.VisualStyleState = VisualStyleState.ClientAndNonClientAreasEnabled;
    }

 ...
在以下位置检查日历控件源: http://referencesource.microsoft.com/#System.Windows.Forms/ndp/fx/src/winforms/Managed/System/WinForms/MonthCalendar.cs     

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

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-