Winforms技术
文章平均质量分 78
cadcisdhht
微软软件开发工程师,先后参与Visual Studio、Azure、Office等产品的开发。之前曾就职于Cisco和Autodesk。
展开
-
Winforms:只读TextBox的文字颜色不随ForeColor的改变而改变
一、 问题描述当一个TextBox的ReadOnly属性设为true的时候,我们不管怎么改变ForeColor,该TextBox的字体颜色都不发生改变。二、 问题重现1. 新建一个Winforms工程;2. 从工具箱里拖拽一个TextBox到Form1上;3. 在属性框里,把textBox1的ReadOnly属性设原创 2009-07-12 20:26:00 · 10110 阅读 · 3 评论 -
Winforms:Form的最小宽度限制
一、问题描述我们给Form设置一个比较小的宽度,但Form的实际宽度可能会大于我们设置的值。二、问题重现1. 在Win7中,把主题设为一种Aero主题;2. 在Visual Studio中,创建一个Winforms工程;3. 在Form1中,添加一个按钮;4. 双击button1,并为button1添加如下Click事件处理器原创 2010-03-13 18:38:00 · 5996 阅读 · 2 评论 -
Winforms: Application.Idle不能在非UI线程里注册
一、现象描述如果我们在一个非UI线程里为事件(Event)Application.Idle注册一个处理器(Handler),我们将发现该事件处理器不会被调用到。二、问题重现1. 在Visual Studio中创建一个Winforms工程;2. 添加Application.Idle的事件处理器的代码:private static void Applicat原创 2009-12-31 12:16:00 · 3293 阅读 · 0 评论 -
Winforms: PictureBox.Load不能载入GIF图片
一、问题描述当我们用方法PictureBox.Load载入GIF图片时,图片不能正常显示。二、问题重现1. 在Visual Studio中创建一个Winforms工程;2. 在Form1上添加一个按钮;3. 为button1添加Click事件处理器;4. 根据GIF的路径,设置相应的URL,并调用PictureBox.Load原创 2010-03-20 17:47:00 · 7004 阅读 · 2 评论 -
Winforms: Windows 7中Taskbar的新效果(1)——概述
Win7推出之后,很多用户发现Windows的界面漂亮了很多。在这些界面中,Taskbar是最引人注目的一个更新。在最新的Taskbar中,缩略图能显示更加丰富的信息。右键点击Taskbar上的按钮,弹出的菜单提供了很多选项以方便用户的操作。比如右键单击文件管理器Explorer的按钮,就会在弹出的菜单中列出用户最经常浏览的文件夹。微软在推出新的Taskbar效果的同时,也推出了一系列对应的A原创 2010-03-28 17:28:00 · 3021 阅读 · 2 评论 -
Winforms: Windows 7中Taskbar的新效果(2)——Overlay Icon
在Win7中运行MSN,我们发现MSN在Taskbar的按钮上,有一个小图片来显示MSN的状态:绿色表示有空,红色表示忙碌,黄色表示不在,而灰色表示脱机。 为了实现这个效果,Windows提供了一个API SetOverlayIcon。下面将详细介绍使用这个API的步骤。1. 准备三张16×16的icon,颜色分别为红、黄、蓝。把这三张Icon添加原创 2010-03-28 18:51:00 · 2992 阅读 · 0 评论 -
Winforms: Windows 7中Taskbar的新效果(3)——进度条
在Win7中,当我们从网上下载一个比较大的文件的时候,我们发现下载对应的窗口在Taskbar上对应的按钮有进度条来显示下载的进展情况。Win7为了方便开发这种新的UI效果,Windows提供了两个API:· void SetProgressValue(IntPtr hwnd, UInt64 ullCompleted, UInt64 ullTotal);· v原创 2010-03-29 23:30:00 · 3577 阅读 · 4 评论 -
Winforms:Windows 7中Taskbar的新效果(4)——缩略图工具栏
在Win7中,运行Windows Media Player,然后把鼠标移到任务栏(Taskbar)上播放器的按钮上,我们注意到在播放器的缩略图的底部,有一个小的工具栏(Toolbox),上面有三个按钮。如下图所示:点击中间的按钮可以开始播放或者暂停播放,点击最左边的按钮播放上一个音频或者视频,而点击最右边的按钮下一个音频或者视频。原创 2010-04-11 17:01:00 · 5020 阅读 · 0 评论 -
Winforms:TypeConverter.IsValid中的改动
本文讨论了TypeConverter.IsValid在.NET 2.0中不管传入参数始终返回true的原因,以及该方法在.NET 4.0中作的修改。修改之后的TypeConverter.IsValid将判断输入的参数对于转换的目标参数是否有效,只在有效的时候返回true.原创 2010-06-27 09:58:00 · 4755 阅读 · 2 评论 -
Winforms:透明的控件
本文分析了在Winforms中为什么只有Form和ToolStripDropDown有Opcity属性来设置透明度,而其他控件没有。本文接着提供了如何给其他控件设置透明度的一种方法。原创 2010-05-31 22:15:00 · 6423 阅读 · 0 评论 -
Winforms: DataGridView的显示刷新问题
本文分析了DataGridView中在拖动滚动条时出现刷新不及时而不能正常显示的问题的原因,并提出了两种适用不同性能需求的解决方案。原创 2010-06-13 19:41:00 · 17549 阅读 · 24 评论 -
Winforms: 在Vista中基于.NET 2.0的GIF动画显示问题
一、问题描述一个基于.NET 2.0的Winform程序运行在Vista中,它用来显示GIF动画。拖拽另外一个程序的窗口把该GIF动画完全覆盖,然后再拖开,重新显示该GIF动画所在的窗口。此时,我们发现动画已经停止播放了。这个问题在XP中不会出现。二、问题重现1. 在Visual Studio里,新建一个基于.NET 2.0的Winforms工程2. 添加一原创 2009-12-28 17:26:00 · 1924 阅读 · 0 评论 -
Winforms: Form的大小不能超过屏幕的分辨率
一、 现象描述当Form的大小超过屏幕的分辨率时,Form不能完全显示,超出屏幕分辨率部分的Form以及上面所有控件都不能显示。二、问题重现1. 把显示器的分辨率设1280×1024,把Windows字体大小设为100%;2. 在Visual Studio中创建一个Winforms的项目;3. 把Form1的Size属性设为1200, 800原创 2009-12-30 17:02:00 · 11370 阅读 · 4 评论 -
Winforms: 复杂布局改变大小时绘制错误
一、 问题描述当一个Form非常复杂,里面的控件嵌套层次很深时,我们发现在改变Form大小的时候,处于最内层的控件会绘制错误。当我们设置了相应Layout之后,通常内层的控件在外层控件的大小改变时应该也随之改变。当问题出现时,我们期待的内层控件没有变化。二、 问题重现1. 新建一个Winforms工程;2. 在Form上添加一个B原创 2009-07-26 23:12:00 · 1945 阅读 · 0 评论 -
Winforms: 不能在Validating时弹出有模式的对话框
一、问题重现步骤: 1. 新建一个Winforms项目;2. 在项目中添加一个UserControl,并在里面添加两个TextBox:textBox1和textBox2;3. 编译该项目;4. 在Toolbox里找到我们添加的UserContr原创 2009-05-23 14:21:00 · 1772 阅读 · 1 评论 -
Winforms:把长ToolTip显示为多行
ToolTip在Windows中是一个常用的显示信息的手段。当ToolTip的信息很长的时候,我们最好能够显示为多行。也就是当ToolTip的信息的长度超过某一阈值的时候,最好显示为多行。Windows是提供了这样的API。非常遗憾的是,Winforms到目前为止暂时还不支持多行的ToolTip。如何在Winforms中设置ToolTip的最大长度,是Winforms程序员经常问到的一个问题。原创 2009-05-28 21:19:00 · 3889 阅读 · 2 评论 -
Winforms: 在TreeView中应用Vista Explorer的新风格
从Vista开始,Windows的Explorer树型控件采用了新的风格。之前,如果在树的某结点前面有一个+或者-,用来表示该结点有子结点。而+/-表示结点的状态:+表示该结点可以打开并显示它的子结点,-表示该结点可以收缩并隐藏它的子结点。结点与它的子结点之间用虚线连接。在Vista的Explorer中,+/-被三角形所替代。三角形顶点的朝向表示结点的状态。同时,把鼠标移到原创 2009-05-28 10:04:00 · 2581 阅读 · 3 评论 -
Winforms:消除WebBrowser的GDI Objects泄露
Winforms的WebBrowser是一个经常被使用的控件,用来浏览网页。可是很多程序员发现WebBrowser会有GDI Objects泄露。一、 问题重现步骤1. 新建一个Winforms项目;2. 添加一个新Form,命名为FormWebBrowser;3. 在FormWebBrowser中添加一原创 2009-05-28 12:19:00 · 2107 阅读 · 1 评论 -
Winforms: 为什么Graphics.DpiX/DpiY总是返回96
一、问题描述Windows中缺省的DPI值为96。在Vista中,我们把DPI设为150%,也就是144。可如果此时我们去获取属性System.Drawing.Graphics.DpiX或者System.Drawing.Graphics.DpiY的值,我们发现得到的仍然是96,而不是144。二、原因分析 修改Windows的DPI值,所有窗口的字体会变大,因此窗口原创 2009-06-14 20:09:00 · 10395 阅读 · 4 评论 -
Winforms:RichTextBox显示特殊字符的问题
一、 问题描述在RichTextBox中输入某些语言的特殊字符时,有些特殊字符将不能正确显示。二、 问题重现1. 在Visual Studio中创建一个Winforms工程;2. 从工具箱里拖拽一个RichTextBox放到Form1上;3. 运行该项目;4. 把输入法设置为微软拼音的GB码输入法;原创 2010-01-17 16:39:00 · 4276 阅读 · 1 评论 -
Winforms: ContextMenuStrip中的内存泄露
一、问题描述在一个Form里添加一个ContextMenuStrip。如果在运行的时候反复打开然后关闭该Form,我们发现程序中出现内存泄露。二、问题重现1. 在Visual Studio中创建一个Winforms项目;2. 在项目中添加一个Form(Form2);3. 在Form2中添加一个ContextMenuStrip;4.原创 2010-01-23 23:49:00 · 2177 阅读 · 4 评论 -
Winforms: MonthCalendar的ForeColor和BackColor
一、问题描述在Vista和Win7中,如果启用了Visual Style,那么我们改变MonthCalendar的ForeColor和BackColor并不能真正改变MonthCalendar的字体和背景颜色。二、问题重现1. 启用Visual Style:在Vista中应用Vista主题,在Win7中应用Aero主题;2. 在Visual Studio中创建Winforms工原创 2010-02-02 10:26:00 · 3834 阅读 · 4 评论 -
Winforms:在Winforms中应用Inproc-SxS
1. Inproc-SxS简介InProc-SxS是.Net 4.0新推出的功能。在.Net 2.0中,一个进程中只能运行一个版本的.Net的运行时(Runtime)。在.Net 4.0中,我们可以在一个进程中运行多个不同版本的.Net运行时。也就是说在.Net 4.0,我们可以把进程的一部分的运行在.Net 4.0上,而另一部分运行在.Net 2.0上。我们可以把进程、运行时和程序域原创 2009-12-06 16:24:00 · 1756 阅读 · 2 评论 -
Winforms: 把Label显示为多行
问题描述:我们经常用Label在对话框上显示提示信息。当需要提示的信息很长时,我们去发现Label不想TextBox那样具有Multiline这样的属性。在一个Textbox中,如果把Multiline属性设为true,该TextBox就能够显示多行文本。遗憾的是,Label并没有这样的属性。因此当我们试图用Label去显示很长的信息的时候,发现不能晚上。问题重现:1.原创 2009-10-12 17:12:00 · 12376 阅读 · 1 评论