首页 > 开发 > 综合 > 正文

聊天主题:如何用C#定制个性化的界面控件

2024-07-21 02:24:19
字体:
来源:转载
供稿:网友
聊天主题:如何用c#定制个性化的界面控件
主持人和专家介绍主持人:guest_jswang_ms 微软专家: 韩定一(guest_danny_ms),赵彦(guest_francs_ms)
host guest_jswang_ms says: 欢迎大家参加微软在线技术聊天。 host guest_jswang_ms says: 本次聊天的主题是如何用c#定制个性化的界面控件 host guest_jswang_ms says: 首先,让我们欢迎来自微软全球技术中心工程师赵彦,韩定一 host guest_francs_ms says: 大家好,我是微软全球技术中心技术专员赵彦,很高兴今天能和大家一起在这里讨论。 host guest_danny_ms says: 大家好!我是微软全球技术中心(上海)技术专员韩定一。欢迎大家来和我们一起讨论问题。
来宾提问 q 和专家解答 a[q] sarillafan : hi, i want to ask one question, is there any method to change the whole appliation style in a simple way? [a] 你可以将控件的flat属性设为system,并写一个manifest文件 [a] 想要让程序里的控件在windows xp下呈现出xp的风格,请参考http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtchusingwindowsxpvisualstyleswithcontrolsonwindowsforms.asp。 [q] xiaohei : manifest文件主要包括那些内容 [a] 我刚才给出的链接里有的:
<?xml version="1.0" encoding="utf-8" standalone="yes"?><assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestversion="1.0"><assemblyidentity   version="1.0.0.0"   processorarchitecture="x86"   name="microsoft.winweb.<executable name>"   type="win32"/><description>.net control deployment tool</description><dependency>   <dependentassembly>     <assemblyidentity       type="win32"       name="microsoft.windows.common-controls"       version="6.0.0.0"       processorarchitecture="x86"       publickeytoken="6595b64144ccf1df"       language="*"     />   </dependentassembly></dependency></dependency>......
[q]i在控件重画时,请问怎样可以实现不规则的渐变效果? [a].net类库中有system.drawing.drawing2d.lineargradientbrush可以画出渐变的效果, http://www.codeproject.com/cs/miscctrl/cutebutton.asp [a]如果自己画(drawline)可以定制更丰富的效果,但是实现比较复杂 [q]可否自定义渐变的公式? [a]所有东西都从底层做起,当然可以自己定义渐变公式 [q] sarillafan : 能不能给一点代码来示范如何画扁平的控件(flat control) [a] 重画菜单的例子有:http://www.codeproject.com/cs/miscctrl/vsnetmenu.asp,该例子画出了visual studio .net样式的例子。 [a] 重画工具栏的例子有:http://www.codeproject.com/cs/miscctrl/vsnettoolbar.asp。 [a] 需要扁平的下拉框控件,您可以参考http://www.codeproject.com/cs/miscctrl/vsnetcombobox.asp上的例子。 [q] seventh : 请问在重画过程中,能否改变mainmenu条的背景颜色? [a] 可以的,您可以重载 menuitem.ondrawitem() [q] liuliu : 所有的控件都可以被重画吗?好像有的控件很复杂。 [a] 是的。确实有的类比较复杂。例如:combobox、toolbar。 [q] liuliu : 那么如何重画那些比按钮、窗体复杂的东东?例如toolbar? [a] 您需要对许多事件响应函数进行重载,http://www.codeproject.com/cs/miscctrl/vsnettoolbar.asp上有例子。 [q] xiaohei : 能不能介绍一个自绘不规则窗体的例子及方法 [a] 您可以将窗体设为透明,并利用贴图来实现 [q] seventh : 如果再redraw过程中大量贴图,似乎会使程序变得很慢,怎样能解决这个问题? [a] 可以开一个缓存graphics对象,在那里面画好,再显示到屏幕上 [q]what is msil? [a]那是microsoft intermediate language的简称 [a].net将所有其上的语言首先编译成il,在执行的,这样就能使不同的语言在.net平台上有几乎相同的表现,前提就是他们遵重规范,并能被编译成il [q]shall we study il just as we should study asm? [a]不需要,il对于上层语言的编写者是透明的,如果你了解il规范,你就能开发一种.net支持的新语言了 [q] 在贴图过程中,我发现图片色彩的rgb值有时会很莫名地改变,影响到界面效果,请问为什么会导致这样的情况发生?可否避免? [a] 可能是由于您设图片的颜色位数太低了 [q] seventh : 如果我需要贴一些形状不规则的图片,是否一定要把图片设置成背景透明的gif图片,有时候这样很麻烦阿~!! [a] bitmap.maketransparent() 需要画出像outlook那样的快捷方式栏可以参见http://www.codeproject.com/cs/miscctrl/outlookbar.asp上的例子。 有关system.windows.forms.control类的信息请参见msdn:ms-help://ms.vscc/ms.msdnvs/cpref/html/frlrfsystemwindowsformsbuttonmemberstopic.htm [q] maorachow : question: if i created a c# program,can i run it on window98? [a] 如果您的windows98装了.net framework的话,那是可以的 [q]做想vs.net里面的属性窗口的那种控件那有例子? [a]你可以看看msdn上的例子:property grid http://samples.gotdotnet.com/quickstart/winforms/doc/controlref/propertygridctl.aspx http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/usingpropgrid.asp http://msdn.microsoft.com/library/default [a] 您可以使用system.windows.froms.propertygrid类 http://www.codeproject.com/cs/miscctrl/globalizedpropertygrid.asp [q] mmud : 我是说自动停靠的那种功能?propertygrid类有吗? [a] 控件有dockable的属性,可以设的 [q] xiaohei : 您可以将窗体设为透明,并利用贴图来实现,贴图功能怎么实现,举例说明一下好吗 [a] 在form上添加一个picturebox即可 [q]c#是怎么实现xml的? [a]xml只是一个规范,.net是基于xml构建的,c#能利用这种标准,与实现这种标准无关 [q] seventh : 在不可执行状态下的菜单条通常是灰色的,请问可否,如何重画? [a] 重载menuitem类的onpaint事件响应函数 [q] mmud: 那里 还能看到聊天记录,比如以前的那些? [a] 上一次的聊天记录可以在http://www.microsoft.com/china/community/article.asp?obody=chat/chatrecord/chat0724&oxslt=chat/chat 找到
小结host guest_danny_ms says: 我来做一些小结 [q]什么是控件重画: [a]控件重画就是通过重载现有控件类或者重载system.windows.forms.controls类来实现符合特殊要求的界面控件。这些控件可以具有特别的style,特殊的事件响应等。 有关system.windows.forms.control类的信息请参见
msdn(ms-help://ms.vscc/ms.msdnvs/cpref/html/frlrfsystemwindowsformsbuttonmemberstopic.htm)
有关本地化system.windows.forms.propertygrid的例子,请参见
http://www.codeproject.com/cs/miscctrl/globalizedpropertygrid.asp
有关重画按钮控件的例子,请参见
http://www.microsoft.com/china/community/article.asp?obody=techzone/techarticle/techdoc/redrawcomponent&oxslt=techzone/techarticle/techcontent和http://www.codeproject.com/cs/miscctrl/cutebutton.asp
需要特殊的效果,例如渐变等,您可以使用system.drawing.drawing2d.lineargradientbrush类
ms-help://ms.vscc/ms.msdnvs/cpref/html/frlrfsystemdrawingdrawing2dlineargradientbrushmemberstopic.htm
需要画出像outlook那样的快捷方式栏可以参见例子
http://www.codeproject.com/cs/miscctrl/outlookbar.asp
需要扁平的下拉框控件,您可以参考例子
http://www.codeproject.com/cs/miscctrl/vsnetcombobox.asp
想要让程序里的控件在windows xp下呈现出xp的风格,请参考
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtchusingwindowsxpvisualstyleswithcontrolsonwindowsforms.asp
需要文件夹浏览器可以参考例子
http://www.codeproject.com/cs/miscctrl/folderbrowser.asp
对于textbox的输入进行限制的例子请参见:
http://www.codeproject.com/cs/miscctrl/maskedcsedit.asp
控制任务栏里的trayicon的例子,请参见
http://www.codeproject.com/cs/miscctrl/notifyiconex.asp
重画菜单的例子有:
http://www.codeproject.com/cs/miscctrl/vsnetmenu.asp
该例子画出了visual studio .net样式的例子。 重画工具栏的例子有:
http://www.codeproject.com/cs/miscctrl/vsnettoolbar.asp
采用skin机制的例子有:
http://www.codeproject.com/cs/miscctrl/skinnedslider.asp

结束语host guest_jswang_ms says: 好,谢谢大家参加此次微软专家技术聊天。 host guest_jswang_ms says: 同时也感谢赵彦和韩定一工程师能在百忙之中抽出时间参加聊天. host guest_jswang_ms says: 我们的聊天时间是下午4:00~5:00.希望下一次还可以看到大家. host guest_jswang_ms says: 下一次的话题是 .net passporthost guest_jswang_ms says: 如果您有任何问题,请参加我们的新闻组 microsoft.public.cn.dotnet.frameworkmicrosoft.public.cn.dotnet.csharphost guest_jswang_ms says: 微软的邮件服务器是:msnews.microsoft.com 本次聊天到此结束,谢谢大家! 
  • 网站运营seo文章大全
  • 提供全面的站长运营经验及seo技术!
  • 发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表