`
txf2004
  • 浏览: 6864746 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

在 ASP.NET2.0 下制作自定义可视控件

阅读更多

自定义可视控件,由 <div> 标签作为模板生成。

属性:

Text:控件显示的文字内容
Href:控件显示的文字的超链接地址
Target:控件显示超链接的目标框架
StyleBackGround:控件背景样式
StyleMouseOut:控件鼠标离开后样式
StyleMouseOver:控件鼠标移上后样式
StyleLine:控件分隔线样式
DisplayPipe:控件是否显示分隔符"|"
Width:控件宽度

用途:

作为类似链接或按钮标签,构成导航栏菜单条使用。

功能:

显示提示文字,可设置链接,可以响应鼠标覆盖/离开事件,变换控件外观。可以显示或隐藏分割符。

代码:

App_Code\SelfControls.cs:

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;

namespace SelfControls
{
public class MainControl : System.Web.UI.WebControls.WebControl
{
#region 定义变量及其默认值
private string text = "";
private string href = "";
private string target = "_self";
private string stylebackground = "";
private string stylemouseout = "";
private string stylemouseover = "";
private string styleline = "";
private bool displayPipe = true;
#endregion

#region 构造函数
public MainControl(): base(HtmlTextWriterTag.Div)
{

}
#endregion

#region 定义属性

//控件显示的文字内容
public string Text
{
get
{
return text;
}

set
{
text = value;
}
}

//控件显示的文字的超链接地址
public string Href
{
get
{
return href;
}

set
{
href = value;
}
}

//控件显示超链接的目标框架
public string Target
{
get
{
return target;
}
set
{
target = value;
}
}

//控件背景样式
public string StyleBackGround
{
get
{
return stylebackground;
}
set
{
stylebackground = value;
}
}

//控件鼠标离开后样式
public string StyleMouseOut
{
get
{
return stylemouseout;
}
set
{
stylemouseout = value;
}
}

//控件鼠标移上后样式
public string StyleMouseOver
{
get
{
return stylemouseover;
}
set
{
stylemouseover = value;
}
}

//控件分隔线样式
public string StyleLine
{
get
{
return styleline;
}
set
{
styleline = value;
}
}

//控件是否显示分隔符"|"
public bool DisplayPipe
{
get
{
return displayPipe;
}

set
{
displayPipe = value;
}
}

//控件宽度
public override Unit Width
{
get
{
return base.Width;
}
set
{
base.Width = value;
}
}
#endregion

///将自定义样式写到 HTTP 输出流中:
protected override void AddAttributesToRender(HtmlTextWriter output)
{
output.Write("<!-自定义控件示例-->");
output.AddAttribute(HtmlTextWriterAttribute.Class, StyleBackGround);
output.AddStyleAttribute("width", Width.ToString());

base.AddAttributesToRender(output);
}

/// 呈现控件的方法 RenderContents
protected override void RenderContents(HtmlTextWriter output)
{
//定义样式
output.AddStyleAttribute(HtmlTextWriterStyle.Width, "10px");
output.AddStyleAttribute(HtmlTextWriterStyle.FontSize, "12px");
output.AddStyleAttribute(HtmlTextWriterStyle.FontFamily, "宋体");
output.RenderBeginTag(HtmlTextWriterTag.Span);

output.AddAttribute(HtmlTextWriterAttribute.Class, StyleMouseOut);
output.AddAttribute("onmouseout", "this.className='" + StyleMouseOut + "'");
output.AddAttribute("onmouseover", "this.className='" + StyleMouseOver + "'");
output.AddAttribute(HtmlTextWriterAttribute.Href, Href);
output.AddAttribute(HtmlTextWriterAttribute.Target, Target);
output.RenderBeginTag(HtmlTextWriterTag.A);

output.Write(text);
output.RenderEndTag();
output.RenderEndTag();

//定义分隔符及样式
if (DisplayPipe)
{
output.AddAttribute(HtmlTextWriterAttribute.Class, StyleLine);
output.RenderBeginTag(HtmlTextWriterTag.Span);
output.Write("|");
output.RenderEndTag();
}
else
{
output.RenderBeginTag(HtmlTextWriterTag.Span);
output.Write("&nbsp;");
output.RenderEndTag();
}

//使用默认逻辑来呈现子控件
base.RenderContents(output);
}
}
}

调用示例:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Top.aspx.cs" Inherits="Top" %>
<%@ Register TagPrefix="SelfControl" Namespace="SelfControls" %>
<%@ OutputCache Duration="1000" VaryByParam="None" %>
<html>
<head>
<title></title>
<LINK REL='stylesheet' TYPE='text/css' HREF='styles/style.css'></LINK>
<LINK REL='stylesheet' TYPE='text/css' HREF='styles/SelfControl.css'></LINK>
</head>

<body leftmargin="0" topmargin="0">

<table cellspacing="0" cellpadding="0" width="100%" border="0">
<tr>
<td width="100%">
<table height="22" cellspacing="0" cellpadding="0" width="100%" border="0">
<tr>
<td bgcolor="#4b92d9" width="30%" height="22"><span style="font-size:12px; color: #ffffff;">自定义控件测试页面</span></td>
<td style="filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr='#4B92D9', endColorStr='#CEDFF6', gradientType='1')" width="35%"> </td>
<td style="filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr='#CEDFF6', endColorStr='#1E77D3', gradientType='1')" width="35%"> </td>
</tr>
</table>
</td>
</tr>
</table>

<table id="Table5" width0="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<SelfControl:MainControl ID="CustomControl1" runat="server"
StyleBackGround="GrayBackGround"
StyleMouseOut="GrayStyleOut"
StyleMouseOver="GrayStyleOver"
StyleLine="GrayLine"
DisplayPipe="true"
Target="MainFrame"
Text="测试主页"
Href="bott.aspx">
</SelfControl:MainControl>
</td>
<td>
<SelfControl:MainControl ID="Customcontrol2" runat="server"
StyleBackGround="GrayBackGround"
StyleMouseOut="GrayStyleOut"
StyleMouseOver="GrayStyleOver"
StyleLine="GrayLine"
DisplayPipe="true"
Target="MainFrame"
Text="电脑学习网"
Href="http://www.why100000.com/" />
</td>
<td>
<SelfControl:MainControl ID="Customcontrol3" runat="server"
StyleBackGround="GrayBackGround"
StyleMouseOut="GrayStyleOut"
StyleMouseOver="GrayStyleOver"
StyleLine="GrayLine"
DisplayPipe="true"
Target="MainFrame"
Text="电脑《问吧》"
Href="http://bbs.why100000.com" />
</td>
<td>
<SelfControl:MainControl ID="Customcontrol4" runat="server"
StyleBackGround="BlueBackGround"
StyleMouseOut="BlueStyleOut"
StyleMouseOver="BlueStyleOver"
StyleLine="BlueLine"
DisplayPipe="false"
Target="_blank"
Text="网络学院"
Href="http://edu.why100000.com/edu" />
</td>
<td width="100%" bgcolor="#f1f1f1"></td>
</tr>
</table>

</body>
</html>

分享到:
评论

相关推荐

    asp.net知识库

    ASP.NET2.0控件一览---标准控件(2) ASP.NET 2.0中使用webpart系列控件 ASP.NET 2.0 中实现跨页提交 新控件、管理外观、布局及其它用户体验 ASP.NET 2.0 缓存技术 (原创) asp.net 2.0中的theme主题覆盖问题 asp.net...

    艾零三企业网站系统 v1.7 Build 120226

    系统环境 asp.net2.0+access,发布包中包含一个微服务器环境,不需要装Microsoft .NET Framework v2.0 也可以访问网站。 艾零三(a03web)企业网站系统包含功能有: 网站单页资料模块:可在后台分组设立多组单页...

    艾零三企业网站系统 1.7.rar

    系统环境 asp.net2.0 access,发布包中包含一个微服务器环境,不需要装Microsoft .NET Framework 2.0 也可以访问网站。 艾零三企业网站系统包含功能有: 网站单页资料模块:可在后台分组设立多组单页资料,每组...

    艾零三企业网站建站系统免费版 v1.7 Build 120225.rar

    系统环境 asp.net2.0 access,发布包中包含一个微服务器环境,不需要装Microsoft .NET Framework v2.0 也可以访问网站。 此版本包含功能有: 网站单页资料模块:可在后台分组设立多组单页资料,每组可设定多个单页...

    Microsoft .NET Framework 4

    默认情况下,基于早期版本的 Framework 的应用程序将继续在目标版本上运行。 Microsoft .NET Framework 4 提供了以下新功能和改进: 公共语言运行时 (CLR) 和基类库 (BCL) 的改进 性能改进,包括更好的多核心支持...

    vcg(验证码控件)

    在IIS管理器中将网站属性的ASP.NET version选中为2.0,并在网站虚拟目录属性的“安全”选项卡中添加ASP.NET用户,赋予写入权限; b) 在Microsoft Visual Studio 2005中打开相应的网站,并打开相应的aspx页面文件...

    ListView标头排序方向指示符

    编写一个ASP.NET自定义控件,该控件扩展了ListView以可视地显示列的排序方向。

    DotNetTextBox V6.0.10 商业版 下载 (已知最新)

    6)增加AjaxSupport目录,使用此目录的文件覆盖原版同名文件后重新编译即可解决在Asp.Net Ajax UpdatePanel下工作不正常的BUG!(不需要使用asp.net ajax的用户无需覆盖此目录的文件) 7)增加asp.net ajax的演示例子...

    商用版本文本编辑器DotNetTextBoxV6.0.8Source 源码

    6)增加AjaxSupport目录,使用此目录的文件覆盖原版同名文件后重新编译即可解决在Asp.Net Ajax UpdatePanel下工作不正常的BUG!(不需要使用asp.net ajax的用户无需覆盖此目录的文件) 7)增加asp.net ajax的演示例子...

    kindeditor-v4.1

    KindEditor非常适合在CMS、商城、论坛、博客、Wiki、电子邮件等互联网应用上使用,2006年7月首次发布2.0以来,KindEditor依靠出色的用户体验和领先的技术不断扩大编辑器市场占有率,目前在国内已经成为最受欢迎的...

    framword4.5

    有关 ASP.NET 增强功能的完整列表,请转到此处。 Windows Presentation Foundation (WPF) 的改进 添加对 Windows 7 多点触控、功能区控件和任务栏扩展性功能的支持。 添加了对 Surface 2.0 SDK 的支持。 新的...

    JAVA上百实例源码以及开源项目

    Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,Java源码下载 1个目标文件 摘要:Java源码,网络相关,HTTP  Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件...

    JAVA上百实例源码以及开源项目源代码

    Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,Java源码下载 1个目标文件 摘要:Java源码,网络相关,HTTP  Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件...

Global site tag (gtag.js) - Google Analytics