清风.NET's blog - 博客.CN[blogger.cn/blog/中国/china]
清风.NET's blog
清风.NET's blog导航
部落阁
我的圈圈
我的首页
联系
聚合
搜索
登录
<2006年7月>
日一二三四五六
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345
统计
随笔 - 60
文章 - 0
评论 - 6
跟踪 - 0
公告
t
档案
2005年11月 (1)
2005年1月 (2)
2004年12月 (3)
2004年11月 (20)
2004年10月 (8)
2004年9月 (2)
2004年8月 (6)
2004年7月 (18)
随笔分类
.net专题
ASP专题
Delphi专题
个人日记
系统分析
delphi技术论坛
Delphi窑洞
中国软件网
大富翁论坛
Delphi编程站点
Delphi盒子
Delphi编程驿站
友情连接
Hairsix Blog
mikespook & swill`s site
源码下载站点
源码空间
经常访问的网站
中国产品采购网
动网论坛
台湾商贸网
网友blog
可洛blog
登录
帐号
密码
记住我:
2005年11月26日
如何为自定义的控件在工具箱中自定义个性化的图标
来源:Internet
作者:未知
版权:本文版权归原作者所有。
很多朋友都为自己编写各自使用的控件,但是所有的控件默认在工具箱中的图片都是单一的图标—齿轮。如何为自定义的控件在工具箱中自定义个性化的图标
背景:作者在编写了一个中间带数字的进度条的控件过程中,突然发现添加在工具箱中的图有点单一,于是产生了如何改用自己定义图的方式来做工具箱的图,于是查询大量的资料,翻译此文如下.该文章和原文有点出入,我修改其中一些Bug,改用自己的实例来做下面叙述.
下面你可以通过不同的方法来完成。在下面例子中,bitmap 或icon图片必须遵循下面的规则
1、Bitmap 或icon尺寸不许是16色 16 X 16
2、底色必须是透明的
技术方案1: 用一个bitmap图片(不能是一个icon图片,嵌入资源)文件
不需要使用特别的ToolboxBitmapAttribute类来实现.
例如你有一个命名空间CarryNoProgramBar,自定义控件为Bar的项目。
1按照上面图片规则来建立一个命名为Bar.bmp的图片,添加该图片到你的项目,
2把该Bar.bmp的图片设置属性 生成操作设置为à嵌入的资源
3注意该图片的命名空间必须也是CarryNoProgramBar
4如果该控件的命名空间和项目的默认命名空间不匹配,你必须把该bitmap图片移到适当的子目录让他们匹配。如果你使用该方法无效,很显然你不能使用该技术来实现你自定义图片,你可以下面ToolboxBitmap属性技术来实现
5.注明我使用直接在根目录中的方式取的工具箱中的图标。
上面简单的技术来实现你的需求,而不需要你去使用ToolboxBitmapAttribute去产生你的类型
技术解决方案2:
使用ToolboxBitmap属性
使用一个和类型同名bitmap图片而非icon嵌入资源,默认的命名空间是CarryNoProgramBar
namespace CarryNoProgramBar{
[ToolboxBitmap(typeof(Bar))]
public class Bar : UserControl {...}
}
上面例运行当中,假定了你的项目根目录下存在一个命名为Bar.bmp嵌入资源图片,注意是你的图片和控件的命名空间的一致性
例2 如果你需要项目中存在子目录放你的图片,你可以修改为
namespace CarryNoProgramBar{
[ToolboxBitmap(typeof(Bar),"sub.Bar.bmp")]
public class Bar : UserControl
{......}
}
或者
[ToolboxBitmap(typeof(Bar),"sub.Bar.ico")]
通过子目录使用,你可以使用特殊的资源,当然也包括ico文件,必须注意我上面使用了一个sub的子目录
例3
有时候你的控件和图片不在同一个命名空间里,在下面的情况你必须在统一个命名空间里使用同一个类型的嵌入资源的图片
默认命名空间
namespace MyAssemblyNamespace{
public class SomeType
{...}
}
namespace DifferentNamespace
{
[ToolboxBitmap(typeof(SomeType), "Bar.ico")]
public class Bar : UserControl
{...}
}
本作者建议请直接使用同一个命名空间来调用工具箱中的图标问题,
13:05 | 评论 (0)
2005年1月10日
自定义asp.net控件分析(二)
上一篇分析了自定义控件的基本语法。这次编写一控件来作为实例。
在asp.net中当你想对button的click事件做确认操作,但Button按钮不能满足此要求。就针对此要求来编写自己的控件。
========================================
继承:System.Web.UI.WebControls.Button
控件功能:弹出确认消息框
控件属性:message(消息框中显示的信息)
控件方法:不需要
控件事件:不需要
使用方法:“确定”执行按钮的button_click事件,“取消”不执行任何事件。
Imports System.ComponentModel
Imports System.Web.UI
Namespace WebControls
<DefaultProperty("Text"), ToolboxData("<{0}:ConfirmButton
runat=server></{0}:ConfirmButton>")> Public Class ConfirmButton
'继承button
Inherits System.Web.UI.WebControls.Button
'为其所包含的任何服务器控件提供唯一的命名空间
Implements INamingContainer
Dim _Message As String
'定义message属性。
<Bindable(True), Category("Appearance"), DefaultValue("")> Property
[Message]() As String
Get
Return _Message
End Get
Set(ByVal Value As String)
_Message = Value
End Set
End Property
Public Sub New()
_Message = ""
End Sub
'重写控件的输出
Protected Overrides Sub Render(ByVal output As
System.Web.UI.HtmlTextWriter)
'为控件增加客户端onclick事件。
If Me.Message.Trim <> "" Then Me.Attributes.Add("onClick",
"jscript:if(!confirm('" & Me.Message & "')) return false;")
Me.Attributes.Add("onFocus", "jscript:this.blur();")
MyBase.Render(output)
End Sub
End Class
End Namespace
14:47 | 评论 (0)
自定义asp.net控件分析 (一)
前些日子,自己做了几个控件。想把自己对自定义控件的一些了解写出来,请大家多多发表自己对自定义控件制作的心得。
让我们能更好的动手制作自己所需功能的控件。
下面就以,.net自动生成的模版做一解释。(以vb语言为例)
1.Imports System.ComponentModel
2.Imports System.Web.UI
3.<DefaultProperty("Text"), ToolboxData("<{0}:WebCustomControl1
runat=server></{0}:WebCustomControl1>")> Public Class WebCustomControl1
4. Inherits System.Web.UI.WebControls.WebControl
5. Dim _text As String
6. <Bindable(True), Category("str"), DefaultValue("11111")> Property [Text]()
As String
7. Get
8. Return _text
9. End Get
10. Set(ByVal Value As String)
11. _text = Value
12. End Set
13. End Property
14. Protected Overrides Sub Render(ByVal output As
System.Web.UI.HtmlTextWriter)
15. output.Write([Text])
16. End Sub
17.End Class
'---------------------------------------------------------------
'1-2 导入命名空间,System.ComponentModel和 System.Web.UI 这没什么好介绍的
'3 DefaultProperty("Text")--指定属性的默认值。如果用此属性需要导入(命名空间: System.ComponentModel)
ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")
指定当从 Visual Studio 等工具中的工具箱拖动自定义控件时为它生成的默认标记。
在下面的示例中,设置特定于 MyLabel 的若干属性。{0} 的所有匹配项都由设计器替换为与 MyLabel 类关联的标记前缀。
<ToolboxData("<{0}:MyLabel Text='MyLabel' BorderColor='Yellow'
BackCo