当前位置:编程学习 > C#/ASP.NET >>

VC#低级、明显BUG怎么没被修复呢???汗

当建一个FORM,将FormBorderStyle设为None,TransparencyKey设等于BackColor,建两个Button,一个叫最小化,代码:this.WindowState=FormWindowState.Minimized。另一个Button叫退出,代码为Application.Exit();
运行后点击最小化按钮缩到任务栏上,再点击恢复窗体,多来回几次未必是哪一次就会闪现并不存在的标题栏-_-#汗得很,分析后是因为设置了TransparencyKey,但又必须要设,用API透明也是一样效果,真搞不懂.NET开发人员是不是没注意到这个问题,就连VB都不会犯这样的低级错误。网上查了很多文献都没办法解决,就连API指定颜色透明(并非像Opacity那样整个FORM透明)遇到的这问题的人也超多。C#想爱你真的好难啊!!!

这问题连MSN都存在,居然官方无视!连MSN Message Live想自己绘标题栏都遇到同样情况,居然用this.Region方式减掉原先的标题栏,拖动或伸缩的时候还会显示差那么一个距离,更别说GDI绘界面了,一塌糊涂。(没环境的可以打开MSN Message Live看看拖动窗体的时候是不是顶上有一截被Region方式切掉了。)

谁有办法能不能搞定这种BUG啊???给种解决办法啊

本人环境:XP HOME+VS.NET2008,.NET 3.5 SP1 --------------------编程问答-------------------- 真是造孽啊,帮你顶顶 --------------------编程问答-------------------- 造孽呀~ --------------------编程问答-------------------- marker , 有机会试试 --------------------编程问答-------------------- 关注! --------------------编程问答-------------------- 谢谢关注,真不知道怎么说微软,连自己做个MSN都遇到这种问题,哎…… --------------------编程问答-------------------- 我的Windows Live Messenger 没有这个问题啊 --------------------编程问答-------------------- bug否 bug吗  --------------------编程问答-------------------- Windows Live Messenger 也有这个问题存在的,你拖动的时候,顶上原来的标题栏一截被Region方式给隐藏掉的,试试就知道,很明显 --------------------编程问答-------------------- 我的没有啊,我试了啊,我的版本 Version 2009 (Build 14.0.8089.726) --------------------编程问答-------------------- 都什么年头了,你竟然还写 WINFORM!

哈哈……WINFORM 能力有限,而且仅仅是 XP 时代的开发平台。转 WPF 和 SILVERLIGHT 吧,如果你还坚持在 .NET 平台上的话。

WINFORM 是在稳健和开发速度上给一个平衡点罢了,性能上不及MFC,功能上不及 WPF/SL,自 4.0 有了 DATAGRID  后,WINFORM 已经没有任何值得我留恋的地方了。 --------------------编程问答-------------------- 去学WPF吧,设计游戏吧
http://www.cnblogs.com/alamiye010/archive/2009/06/17/1505346.html
这个是个高手啊(相对我来说)
--------------------编程问答-------------------- 到微软的地盘上去吼吼 --------------------编程问答-------------------- ding --------------------编程问答-------------------- 关注,顶 --------------------编程问答-------------------- 如果C#的Winform类库是包装MFC的话,如果没有MFC功能强大, 那就是饭忽攸程序员,我也发现我们被忽攸了
我也有一个问题
步骤:\
一.建父窗体即From1的Ismdip....=True
二.建一子窗体,设图标1
三.建二子窗体,设图标2
四.在父窗体中调用一子窗体(注意调用就最大化)显示设定的图标1没有问题(在左上角)
五.问题来了,如果父窗体再调用二子窗体(注意调用就最大化),不能显示设定的图标2了,却显示默认的图标了
怪事......... --------------------编程问答-------------------- 微软的庇事真多,哎。。。到微软官方论坛发贴也没得到解决办法,反馈BUG还没音讯 --------------------编程问答-------------------- 回复9楼,fengling2001
我的也是Version 2009 (Build 14.0.8089.726)的MSN Live Message,我这里出现情况的
一会将BUG效果贴出来大伙瞧瞧

顶一顶,这样经典问题应该申请加精 --------------------编程问答-------------------- 神人啊。。。。 --------------------编程问答-------------------- 效果图看看。。 --------------------编程问答-------------------- 汗。。。
截图截不了拖动的虚框,录像大师也录不了透明窗体,这事整得。。。图贴不了了,大家有兴趣的话看一下MSN Version 2009 (Build 14.0.8089.726),有时间的话按我说的方法建一个FORM看看这个BUG --------------------编程问答-------------------- BUG截图上传了
http://static6.photo.sina.com.cn/orignal/548cbf97x78a68f8601d5&690[img=http://static6.photo.sina.com.cn/orignal/548cbf97x78a68f8601d5&690][/img] --------------------编程问答-------------------- 此图片仅限于新浪博客用户交流与沟通 --------------------编程问答-------------------- 试了下确实有这种情况 --------------------编程问答-------------------- 看来我再重新找个地方贴一张让大伙瞧瞧,哎。。。
跟着微软的脚步跟出问题来了,上了贼船了 --------------------编程问答--------------------
这张图片是上传到CSDN的,不知道大伙能不能看到 --------------------编程问答-------------------- 可以看到 --------------------编程问答-------------------- 微软让我心痛,真不知道有什么办法能避开这个BUG,否则工作上成了个无法完成的任务了-_-# --------------------编程问答-------------------- 这个问题和C#无关,在Vista中也没有此问题存在...鉴于微软早已停止对Vista之前版本的技术支持服务,个人认为微软不会对此问题表示关心... --------------------编程问答-------------------- jf --------------------编程问答-------------------- 看不太懂,而且我是windows7,用vs2008写了个form没出现你说的标题栏,
透明你可以试试2种办法
1.
GraphicsPath GP = new GraphicsPath();
            GP.AddRectangle(Button1.Bounds);
            GP.AddRectangle(Button2.Bounds);

            this.Region = new Region(GP);


2.增加2句话
this.SetStyle(ControlStyles.SupportsTransparentBackColor
                 | ControlStyles.UserPaint
                 | ControlStyles.AllPaintingInWmPaint
                 | ControlStyles.Opaque, true);
this.BackColor = Color.Transparent;
--------------------编程问答-------------------- —_—#

在XP上用VC#2008做就会有这个效果,我找了个朋友用WIN7试了下也出现我说的BUG效果 --------------------编程问答-------------------- 回复30楼wartim

用this.Region可以截掉FORM的某一部分我知道,但被截掉的那部分实际还是存在的,当最大化、拖动或移动的时候还是会显示那个被截掉的部分(虚框)+没被截掉的部分。用Region治标不治本,不能实际删掉被Region的部分。 --------------------编程问答-------------------- 楼主相当的白

等同于买了部超级跑车,然后抱怨不能用五档起步一样。 --------------------编程问答-------------------- 哈哈,汗!不是一码事吧
好比面对我的是一个奇丑无比的美女,然后我用Region方式把她的头隐藏掉,可她的头还是在的,我想直接砍掉。555555555,谁有什么更好的解决方案吗??? --------------------编程问答-------------------- 你说
this.TransparencyKey = this.BackColor;

必须设置, 为何? --------------------编程问答-------------------- 你看看QQ的窗口是啥样的 --------------------编程问答-------------------- 回复35楼
让窗体背景色透明是工作任务需要的,因为任务是要在透明背景的FORM上用GDI绘效果

回复36楼
QQ的不知道是用什么做的,但好像其他语言透明后不会像VC#一样出这种BUG,大汗ing.... --------------------编程问答-------------------- 是个大问题,老外也没搞定。

codeproject上面的ribbion控件一样有这个问题。 --------------------编程问答-------------------- QQ貌似是MFC的 --------------------编程问答-------------------- 系统紧张的时候QQ有时也会出现这种情况,但QQ或飞信处理得非常到位,但不知道怎么弄的555555555 --------------------编程问答-------------------- 刚分析了一下,飞信是重绘了原来的标题栏,并非自己绘的标题栏,但在伸缩飞信的时候也会有一点小BUG就是圆角会先显示是直角再变圆 --------------------编程问答-------------------- 顶一顶大家关注一下
本人现正采用WndProc试着重写一下,不知道能不能避开这BUG --------------------编程问答-------------------- 早上好, 接分 --------------------编程问答-------------------- 在微软件写代码、做测试的,也是人,想想我们写代码时犯的错误,就知道微软件为什么一个补丁接着一个补丁了。 --------------------编程问答-------------------- 這是個“大問題”? --------------------编程问答-------------------- 试试Linux环境 --------------------编程问答--------------------
顶 --------------------编程问答--------------------
引用 35 楼 dobzhansky 的回复:
你说
 this.TransparencyKey = this.BackColor;

 必须设置, 为何?


//让窗体背景色透明是工作任务需要的,因为任务是要在透明背景的FORM上用GDI绘效果 

我感觉应该是动态制作 Region 合并, 而不是在一个透明背景上画.



Region 的有微软的一个例子
RegionMaster

另外, win32 的使用 region 制作不规则窗口的有个例子,
忘记了网页了. --------------------编程问答-------------------- 找到了,
Win32 Window Skinning
http://www.flipcode.com/archives/Win32_Window_Skinning.shtml --------------------编程问答-------------------- 是软件就有Bug,不可能群尽测试 --------------------编程问答-------------------- 不行的,这个BUG用region避不开,MSN就是用region方式才出现BUG,但用VC#真不知道有什么办法解决。MVP看到都头大,谁有高招么? --------------------编程问答--------------------
引用 41 楼 jerrylau86853 的回复:
刚分析了一下,飞信是重绘了原来的标题栏,并非自己绘的标题栏,但在伸缩飞信的时候也会有一点小BUG就是圆角会先显示是直角再变圆

飞信是设为无标题栏模式自己画的标题栏,反编译飞信的代码看看吧。
参考 --------------------编程问答-------------------- up --------------------编程问答-------------------- rev --------------------编程问答-------------------- 禁止灌水,讨论贴 --------------------编程问答-------------------- 我竟然没看懂,,,哎 --------------------编程问答-------------------- 我也遇到过这个问题
懒得自己弄,继续坐等微软解决 --------------------编程问答-------------------- 关注中。。。。。。 --------------------编程问答-------------------- -_-#居然有人没看懂,有人也遇到同样问题 --------------------编程问答-------------------- 叫什么叫啊,有本事你开发一个VS出来给我们大家用啊,落后就要挨打, --------------------编程问答-------------------- 你也太自亏不如了嘛,被打多了吧?哈哈 --------------------编程问答-------------------- 任何窗体都会有标题栏,只不过是隐藏了而已,也许,你用win32 API自己画个窗体不带标题栏的可能实现,不过,那已经违背了C#的初衷。所以,我建议楼主用回C++吧...或者C.. --------------------编程问答--------------------
引用 9 楼 fengling2001 的回复:
我的没有啊,我试了啊,我的版本 Version 2009 (Build 14.0.8089.726)


有 我就是用的你这个版本 --------------------编程问答-------------------- 顶顶顶顶顶 --------------------编程问答-------------------- ````飘过````祝大家圣诞快乐!
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,