如题请教~

解决方案 »

  1.   

    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
      

  2.   

    给你个简单的容器控件,实际上控件不管是CS还是BS,都是有章可循——做这个上瘾,呵呵;将自己的构思放入里面,无外乎就是继承、属性、输入、数据、泛型、接口等等的组合,实际上高深的东西,用上的不多;
    ││博客空间:http://blog.csdn.net/lovingkiss
    ││资源下载:http://download.csdn.net/user/lovingkiss
    ││Email:loving-kiss@163.com [MSN也是这个]
    ││联系方式:Q66840199 项目、聊天、咨询、探讨、统统收费,呵呵......
    ╚---------------------------------------------------------------------------------------------------------ō*︻$▅▆▇◤ 
      

  3.   

    继承WebControl  或者 control  就可以了
      

  4.   

    AspNetPager这种控件 叫服务器控件
    可以买书看<<ASP.NET服务器控件开发技术与实例>> 
    也可以搜索一下,有不少经典的教程.
      

  5.   

    哇``发现lovingkiss就是早上路过的那篇很风骚的帖子的很风骚的lz..
    你在2楼写的那个是??
    我<-菜鸟,不是很明白额..
    应该怎么用的..
      

  6.   

    额``那段代码是visual basic吧``貌似不能运行啊~
      

  7.   

    添加个.ascx文件也可以的!!
      

  8.   

    给你一个小例子: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; }
            }
        }
    }
      

  9.   

    是用render 重写出来的.weisEditor 是个源码开放的 在线编辑器可以去下载看看.
      

  10.   

    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 + "页&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</EM>";            pagestr += pgidx > 1 ? "<a href=\"" + query_string + "?page=1\">首页</a>&nbsp;&nbsp;<a href=\"" + query_string + "?page=" + pre + "\">上一页</a>" : "<B>首页 上一页</B>";
                //中间页处理,这个增加时间复杂度,减小空间复杂度
                for (int i = startcount; i <= endcount; i++)
                {
                    pagestr += pgidx == i ? "&nbsp;&nbsp;<SPAN><B>" + i + "<B></SPAN>" : "&nbsp;&nbsp;<a href=\"" + query_string + "?page=" + i + "\">" + i + "</a>";
                }
                pagestr += pgidx != allpage ? "&nbsp;&nbsp;<a href=\"" + query_string + "?page=" + next + "\">下一页</a>&nbsp;&nbsp;<a href=\"" + query_string + "?page=" + allpage + "\">末页</a>" : " 下一页 末页";
                pagestr += "</DIV>";
                writer.Write(pagestr);
                base.Render(writer);
            }
        }
    }
      

  11.   

    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);
            }      
        }
    }
      

  12.   

    weiseditor2.0 新版上线了,功能强大,容易扩展,全源放开放
    demo地址:http://www.weiseditor.com/demo.aspx下载地址:http://www.weiseditor.com/down.aspx