Imports System Imports System.ComponentModel Imports System.Drawing.Design Imports System.Security.Permissions Imports System.Web Imports System.Web.UI Namespace JYL <Designer(GetType(ContainerDesigner)), PersistChildren(True), ParseChildren(False), ToolboxData("<{0}:myPanel runat=server>myPanel</{0}:myPanel>")> _ Public Class myPanel Inherits WebCommon Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter) writer.RenderBeginTag(HtmlTextWriterTag.Table) writer.RenderBeginTag(HtmlTextWriterTag.Tr) Dim II As Integer For II = 1 To Me.Controls.Count - 1 writer.AddAttribute("Align", "Center") writer.AddAttribute("width", "30%") writer.RenderBeginTag(HtmlTextWriterTag.Td) Me.Controls(II).RenderControl(writer) writer.RenderEndTag() Next writer.RenderEndTag() writer.RenderEndTag() End Sub End Class Public Class ContainerDesigner Inherits System.Web.UI.Design.ContainerControlDesigner Private _style As WebControls.Style = Nothing Public Overrides ReadOnly Property FrameCaption() As String Get Return "" End Get End Property Public Overrides ReadOnly Property FrameStyle() As WebControls.Style Get If _style Is Nothing Then _style = New WebControls.Style() _style.Font.Name = "宋体" _style.Font.Size = New WebControls.FontUnit("12px") _style.BackColor = Drawing.Color.LavenderBlush _style.ForeColor = Drawing.Color.DarkBlue End If Return _style End Get End Property End Class End Namespace
给你一个小例子:using System; using System.Text; using System.Web.UI;namespace Diancheng.Controls { /// <summary> /// 这是个简单的例子,有点类似于 Literal 的效果 /// </summary> public class RequiredStar : Control { private string _text; protected override void Render(HtmlTextWriter writer) { writer.RenderBeginTag(HtmlTextWriterTag.Span); writer.WriteLine(Text); writer.RenderEndTag(); } public string Text { get { return (string.IsNullOrEmpty(_text)) ? "*" : _text; } set { _text = value; } } } }
是用render 重写出来的.weisEditor 是个源码开放的 在线编辑器可以去下载看看.
using System; using System.Collections.Generic; using System.Text; using System.Web; namespace pager { public class Mypg : System.Web.UI.Control { private int _pgcount = 10; private string _query_string = string.Empty; private int _pgidx = 1; private int _pgsize = 20; public virtual int pgcount { get { return this._pgcount; } set { this._pgcount = value; } } public virtual string query_string { get { return this._query_string; } set { this._query_string = value; } } public virtual int pgidx { get { return this._pgidx; } set { this._pgidx = value; } } public virtual int pgsize { get { return this._pgsize; } set { this._pgsize = value; } } protected override void Render(System.Web.UI.HtmlTextWriter writer) { int allpage = 0; int next = 0; int pre = 0; int startcount = 0; int endcount = 0; string pagestr = ""; if (pgidx < 1) { pgidx = 1; } //计算总页数 if (pgsize != 0) { allpage = (pgcount / pgsize); allpage = ((pgcount % pgsize) != 0 ? allpage + 1 : allpage); allpage = (allpage == 0 ? 1 : allpage); } next = pgidx + 1; pre = pgidx - 1; startcount = (pgidx + 5) > allpage ? allpage - 9 : pgidx - 4;//中间页起始序号 //中间页终止序号 endcount = pgidx < 5 ? 10 : pgidx + 5; if (startcount < 1) { startcount = 1; } //为了避免输出的时候产生负数,设置如果小于1就从序号1开始 if (allpage < endcount) { endcount = allpage; }//页码+5的可能性就会产生最终输出序号大于总页码,那么就要将其控制在页码数之内 pagestr = "<DIV class=pages>"; pagestr += "<EM>共" + allpage + "页 </EM>"; pagestr += pgidx > 1 ? "<a href=\"" + query_string + "?page=1\">首页</a> <a href=\"" + query_string + "?page=" + pre + "\">上一页</a>" : "<B>首页 上一页</B>"; //中间页处理,这个增加时间复杂度,减小空间复杂度 for (int i = startcount; i <= endcount; i++) { pagestr += pgidx == i ? " <SPAN><B>" + i + "<B></SPAN>" : " <a href=\"" + query_string + "?page=" + i + "\">" + i + "</a>"; } pagestr += pgidx != allpage ? " <a href=\"" + query_string + "?page=" + next + "\">下一页</a> <a href=\"" + query_string + "?page=" + allpage + "\">末页</a>" : " 下一页 末页"; pagestr += "</DIV>"; writer.Write(pagestr); base.Render(writer); } } }
using System; using System.Collections.Generic; using System.ComponentModel; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.IO;namespace Validate { [DefaultProperty("Text")] [ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")] public class WebCustomControl1 : System.Web.UI.WebControls.Image { [Bindable(true)] [Category("Appearance")] [DefaultValue("")] [Localizable(true)] public string Text { get { String s = (String)ViewState["Text"]; return ((s == null) ? String.Empty : s); } set { ViewState["Text"] = value; } } private int count; public int Count { get { return count; } set { count = value; } } System.Web.UI.WebControls.Image image = new System.Web.UI.WebControls.Image(); private string MakeValidateCode() { char[] chars = new char[]{'1','2','3','4','5','6','7','8','9','0' ,'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z' ,'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; Random random = new Random(); string str = ""; for (int i = 0; i < Count; i++) { int index = random.Next(0, chars.Length - 1); str += chars.GetValue(index).ToString(); } HttpContext.Current.Session["s"] = str; return str; }
public void CreatePicture(System.Web.UI.WebControls.Image page) { Bitmap bitmap = new Bitmap(50, 25, PixelFormat.Format24bppRgb); Graphics g = Graphics.FromImage(bitmap); Brush brush = new LinearGradientBrush(new Point(0, 0), new Point(50, 25), Color.FromArgb(22, 22, 22), Color.FromArgb(255, 222, 0)); g.FillRectangle(brush, 0, 0, 50, 25); g.DrawString(MakeValidateCode(), new Font("黑体", 12, FontStyle.Italic), new SolidBrush(Color.Red), new PointF(2, 2)); g.Save(); //MemoryStream ms = new MemoryStream(); bitmap.Save(this.Context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif); //page.Page.Response.ClearContent(); //page.Page.Response.ContentType = "image/gif"; //page.Page.Response.BinaryWrite(ms.ToArray()); //page.Page.Response.End(); g.Dispose(); bitmap.Dispose(); } protected override void OnLoad(EventArgs e) { base.OnLoad(e); CreatePicture(image); } } }
Imports System.ComponentModel
Imports System.Drawing.Design
Imports System.Security.Permissions
Imports System.Web
Imports System.Web.UI
Namespace JYL
<Designer(GetType(ContainerDesigner)), PersistChildren(True), ParseChildren(False), ToolboxData("<{0}:myPanel runat=server>myPanel</{0}:myPanel>")> _
Public Class myPanel
Inherits WebCommon Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
writer.RenderBeginTag(HtmlTextWriterTag.Table)
writer.RenderBeginTag(HtmlTextWriterTag.Tr)
Dim II As Integer
For II = 1 To Me.Controls.Count - 1
writer.AddAttribute("Align", "Center")
writer.AddAttribute("width", "30%")
writer.RenderBeginTag(HtmlTextWriterTag.Td)
Me.Controls(II).RenderControl(writer)
writer.RenderEndTag()
Next
writer.RenderEndTag()
writer.RenderEndTag()
End Sub
End Class Public Class ContainerDesigner
Inherits System.Web.UI.Design.ContainerControlDesigner
Private _style As WebControls.Style = Nothing Public Overrides ReadOnly Property FrameCaption() As String
Get
Return ""
End Get
End Property Public Overrides ReadOnly Property FrameStyle() As WebControls.Style
Get
If _style Is Nothing Then
_style = New WebControls.Style()
_style.Font.Name = "宋体"
_style.Font.Size = New WebControls.FontUnit("12px")
_style.BackColor = Drawing.Color.LavenderBlush
_style.ForeColor = Drawing.Color.DarkBlue
End If
Return _style
End Get
End Property
End Class
End Namespace
││博客空间:http://blog.csdn.net/lovingkiss
││资源下载:http://download.csdn.net/user/lovingkiss
││Email:loving-kiss@163.com [MSN也是这个]
││联系方式:Q66840199 项目、聊天、咨询、探讨、统统收费,呵呵......
╚---------------------------------------------------------------------------------------------------------ō*︻$▅▆▇◤
可以买书看<<ASP.NET服务器控件开发技术与实例>>
也可以搜索一下,有不少经典的教程.
你在2楼写的那个是??
我<-菜鸟,不是很明白额..
应该怎么用的..
using System.Text;
using System.Web.UI;namespace Diancheng.Controls
{
/// <summary>
/// 这是个简单的例子,有点类似于 Literal 的效果
/// </summary>
public class RequiredStar : Control
{
private string _text; protected override void Render(HtmlTextWriter writer)
{
writer.RenderBeginTag(HtmlTextWriterTag.Span);
writer.WriteLine(Text);
writer.RenderEndTag();
} public string Text
{
get { return (string.IsNullOrEmpty(_text)) ? "*" : _text; }
set { _text = value; }
}
}
}
using System.Collections.Generic;
using System.Text;
using System.Web;
namespace pager
{
public class Mypg : System.Web.UI.Control
{ private int _pgcount = 10;
private string _query_string = string.Empty;
private int _pgidx = 1;
private int _pgsize = 20;
public virtual int pgcount
{
get { return this._pgcount; }
set { this._pgcount = value; }
} public virtual string query_string
{
get { return this._query_string; }
set { this._query_string = value; }
} public virtual int pgidx
{
get { return this._pgidx; }
set { this._pgidx = value; }
} public virtual int pgsize
{
get { return this._pgsize; }
set { this._pgsize = value; }
} protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
int allpage = 0;
int next = 0;
int pre = 0;
int startcount = 0;
int endcount = 0;
string pagestr = "";
if (pgidx < 1) { pgidx = 1; }
//计算总页数
if (pgsize != 0)
{
allpage = (pgcount / pgsize);
allpage = ((pgcount % pgsize) != 0 ? allpage + 1 : allpage);
allpage = (allpage == 0 ? 1 : allpage);
}
next = pgidx + 1;
pre = pgidx - 1;
startcount = (pgidx + 5) > allpage ? allpage - 9 : pgidx - 4;//中间页起始序号
//中间页终止序号
endcount = pgidx < 5 ? 10 : pgidx + 5;
if (startcount < 1) { startcount = 1; } //为了避免输出的时候产生负数,设置如果小于1就从序号1开始
if (allpage < endcount) { endcount = allpage; }//页码+5的可能性就会产生最终输出序号大于总页码,那么就要将其控制在页码数之内
pagestr = "<DIV class=pages>";
pagestr += "<EM>共" + allpage + "页 </EM>"; pagestr += pgidx > 1 ? "<a href=\"" + query_string + "?page=1\">首页</a> <a href=\"" + query_string + "?page=" + pre + "\">上一页</a>" : "<B>首页 上一页</B>";
//中间页处理,这个增加时间复杂度,减小空间复杂度
for (int i = startcount; i <= endcount; i++)
{
pagestr += pgidx == i ? " <SPAN><B>" + i + "<B></SPAN>" : " <a href=\"" + query_string + "?page=" + i + "\">" + i + "</a>";
}
pagestr += pgidx != allpage ? " <a href=\"" + query_string + "?page=" + next + "\">下一页</a> <a href=\"" + query_string + "?page=" + allpage + "\">末页</a>" : " 下一页 末页";
pagestr += "</DIV>";
writer.Write(pagestr);
base.Render(writer);
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;namespace Validate
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")]
public class WebCustomControl1 : System.Web.UI.WebControls.Image
{
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? String.Empty : s);
} set
{
ViewState["Text"] = value;
}
}
private int count; public int Count
{
get { return count; }
set { count = value; }
}
System.Web.UI.WebControls.Image image = new System.Web.UI.WebControls.Image();
private string MakeValidateCode()
{
char[] chars = new char[]{'1','2','3','4','5','6','7','8','9','0'
,'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'
,'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
Random random = new Random();
string str = "";
for (int i = 0; i < Count; i++)
{
int index = random.Next(0, chars.Length - 1);
str += chars.GetValue(index).ToString();
}
HttpContext.Current.Session["s"] = str;
return str; }
public void CreatePicture(System.Web.UI.WebControls.Image page)
{
Bitmap bitmap = new Bitmap(50, 25, PixelFormat.Format24bppRgb);
Graphics g = Graphics.FromImage(bitmap);
Brush brush = new LinearGradientBrush(new Point(0, 0), new Point(50, 25), Color.FromArgb(22, 22, 22), Color.FromArgb(255, 222, 0));
g.FillRectangle(brush, 0, 0, 50, 25);
g.DrawString(MakeValidateCode(), new Font("黑体", 12, FontStyle.Italic), new SolidBrush(Color.Red), new PointF(2, 2));
g.Save();
//MemoryStream ms = new MemoryStream();
bitmap.Save(this.Context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif);
//page.Page.Response.ClearContent();
//page.Page.Response.ContentType = "image/gif";
//page.Page.Response.BinaryWrite(ms.ToArray());
//page.Page.Response.End();
g.Dispose();
bitmap.Dispose();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
CreatePicture(image);
}
}
}
demo地址:http://www.weiseditor.com/demo.aspx下载地址:http://www.weiseditor.com/down.aspx