用户控件&自定义控件----.Net再学

开始学习.Net到现在两年了快,开始学习java 也有大半年了,中间做项目,又开始.Net的学习。这次做.Net项目,后台代码敲的不是太多,重点放在了UI上,这也是这篇博客要写的内容有关,做UI就少不了控件的使用。这次做UI 主要是提取公共,抽象控件。

敲代码,就离不开控件,那是第一次.Net学习过之后,对于控件的认识很肤浅,通过这次学习,又弥补了对UI控件的认识。这篇博客要说的是:用户控件和自定义控件。提到这两种控件,想必编程的孩子们都不陌生,但是谈到使用,谈到他们的区别,伙伴们清楚吗?

我们就一起来对比一下这两种控件:

一、易创造性与易用性

它们的主要区别在于设计时的易创造性与易用性。

1、创建性

用户控件易于创建,为使用可视化设计工具的使用者提供有限的支持——它可以像编辑普通页面一样有可视化编辑环境,也和普通页面一样包含页面部分的.aspx和.cs代码文件。

自定义控件没有可视化编辑,是经过编译的代码,这使其易于使用但难于创建。只能手写代码。只含有一个.cs代码文件。

2、易用性

用户控件开发方便,自定义控件开发比较繁琐,用户控件的使用,每个应用程序中需要控件的一个单独副本,不能添加到visual  studio工具箱中,适用于静态布局,它们在高级方案中使用起来可能不太方便。

自定义控件可以编译成.DLL文件,其他项目都可以使用。编译后可以加载到工具箱中,就像TextBox,DataGrid一样  在设计器中可以用鼠标拖动到页面上使用。自定义控件重用性高,且可以定制个性化的控件,已解决经常使用且现有控件不能完成的任务。

3、使用范围

自定义控件,它为使用者提供完全的可视化设计工具支持,仅在全局程序集缓存中需要控件的单个副本,可以添加到visual studio中的工具箱,适用于动态布局。

如果您的控件包含大量静态布局,用户控件则可能是较佳的选择。

4、使用

用户控件(UserControl):  扩展名为*.ascx,跟*.aspx在结构上相似,是指页面中 加载的功能块,只是用户控件不能单独作为页面运行,必须嵌入到*.aspx页面或其它用户控件中使用.  它要求用asp.net页面作为容器。

自定义控件,跟HtmlControl或WebControl相似,编译后可以添加引用到工具栏里面,直接用鼠标拖动使用.

二、用户控件和自定义控件

1)、自定义服务器控件

它又分为两种:

1.一种是用*.aspx代码和*.cs代码编译后生成DLL,再添加引用到工具箱使用.

一般用于WebForm中.

2.另一种是只用*.cs实现,再编译生成DLL,添加到工具箱使用.

一般用于WinForm中.

生成步骤:

比如:

1.  将一个Button从设计器拖到页面中,

对按钮大小,颜色或文本设置一个固定值,保存文件名为:  a.cs

2.  csc  /r:System.dll  /t:library/out:../../A.dll    a.cs

3.  右击工具箱空白处,弹出右击菜单后,选“添加移除项”,将刚生成的DLL 添加到工具箱里面来,这样就可以像一般的Button一样拖动使用了。

2)接下来再看看用户控件。

用户控件用.ascx文件表示,在"添加新项"中点击"web用户控件".它不是编译代码,编译随网页动态的进行 。

还有一些特性都是从网上查的,并没有试验过,如下:

用户控件支持缓存,而自定义控件不支持缓存;

用户控件可以在一个应用程序中重用,但不能跨应用程序重用。

自定义用户就可以跨应用程序使用,它放在被称为全局程序集缓存的中央库中,以便那台服务器上的所有应用程序都可以使用它。

三、用户控件的例子

这是别人的一个用户控件的例子,仅供大家参考。

public partial class Login : System.Web.UI.UserControl
{
    protected SqlConnection conn;
    protected SqlCommand cmd;
    protected SqlDataReader dr;
 
    /// <summary>
    /// Txtusername是用户控件的属性,要想在aspx访问它必须先封装起来为public才行
    /// </summary>
    public  string Txtusername
    {
        get { return this.TextBox1.Text; }
        set { this.TextBox1.Text = value; }
    }
   
    protected void Page_Load(object sender, EventArgs e)
    {
    }
   
    protected void Button1_Click1(object sender, EventArgs e)
    {
        string strname = this.TextBox1.Text.Trim();
        string strpwd = this.TextBox2.Text.Trim();
        //根据指定的密码利用哈希算法转换成一个MD5的哈希密码
        //this.Response.Write(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strpwd, "MD5"));
        conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DBuserConnectionString"].ToString());
        conn.Open();
        cmd = new SqlCommand("select * from userdetails where [email protected] and [email protected]", conn);//System.Web.Configuration.FormsAuthPasswordFormat.MD5
        cmd.Parameters.Add(new SqlParameter("@username", strname));
        //注意如果数据库里的密码是加密的话,在这里根据条件查询赋值前也得MD5加密才是
        cmd.Parameters.Add(new SqlParameter("@userpwd", System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strpwd, "MD5")));
        dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        //前进下一条记录
        if (dr.Read())
        {
            //状态管理,在asp.net中默认的状态是用cookie保存的
            //在用户每次登陆成功时就把用户保存到Cookie中,并用一个复选框来管理用户是否多长时间保存状态
            HttpCookie cookie = new HttpCookie("username", strname);
            if (this.CheckBox1.Checked)
            {
                //设置cookie的过期日期
                cookie.Expires = DateTime.Now.AddMonths(1);
                //响应后添加到cookies集合里
                this.Response.Cookies.Add(cookie);
            }
            //过3秒后自动跳转页面,相当于html的mate标签
            this.Response.AppendHeader("refresh", "3;url=DataListDemo1.aspx");
        }
        else
        {
            this.Response.Write("username or password are wrong!");
        }
        conn.Close();
    }
}

总结:最近做的MVC项目,用Html来制作一个公共的页面,或者半个页面,这么看来是自定义控件,其实,用户控件一直也没有使用。

不光是.Net,在Java中也应该有类似的概念,通过include包含其他页面,具体我还不清楚,接下来做java可以翻翻。

时间: 2024-12-29 11:25:22

用户控件&自定义控件----.Net再学的相关文章

【asp.net】用户控件&amp;自定义控件

在原来的学习中,从vb到asp.net我们都接触了很多的控件,这些控件为我们的程序开发提供了很多的便利,在程序开发中,许多功能或代码都需要重复的使用,我们在牛腩的时候学习了模板方法和重复代码添加工具箱调用的方法,提高了效率.在功能方面使用了母版页,在asp.net中又学习了用户控件和自定义控件,开发人员可以自行开发用户控件和自定义控件以提高代码的复用性.下面来简单介绍一下这两种控件. 一.用户控件: 定义: 用户控件是用户自定义的可重用的一种控件,用户控件用.ascx文件表示,它不是编译代码,编

另类的动态加载用户控件

最新更新:原本在看到此方案的时候觉的想到这方案的朋友特别高深,后来本人把本文写出来想和大家分享下,才知道这个就是Dottext方案中的一个模块而已.真是汗啊,嫌自己见识太浅.既然写了就当复习了一次Dottext..这还是我第一次听说Dottext.     在BS架构这块,我们平时建一个网站,通常是创建一个WebSite网站,或者是创建一个WebApplication.然后在WEB项目里面建立相应的aspx文件,以及用户控件,自定义控件等等.但是做为一个新加入此项目的你要去修改里面的某一个功能模

自定义控件VS用户控件

1 自定义控件与用户控件区别 WinForm中, 用户控件(User Control):继承自 UserControl,主要用于开发 Container 控件,Container控件可以添加其他Controls控件 自定义控件(Custom Control):继承自 Control,主要用于开发windows控件的最基本的类,比如 Text,Button 控件 2 要开发自己的控件的几种方法[1] 复合控件(Composite Controls):将现有的各种控件组合起来,形成一个新的控件,来满

C# 自定义控件VS用户控件

1 自定义控件与用户控件区别 WinForm中, 用户控件(User Control):继承自 UserControl,主要用于开发 Container 控件,Container控件可以添加其他Controls控件 自定义控件(Custom Control):继承自 Control,主要用于开发windows控件的最基本的类,比如 Text,Button 控件 2 要开发自己的控件的几种方法[1] 复合控件(Composite Controls):将现有的各种控件组合起来,形成一个新的控件,来满

Asp.net 用户控件和自定义控件注册

在ASPX页中注册用户控件的方法 <%@ Register Src="ListPicker.ascx" TagName="ListPicker" TagPrefix="uc1" %> 在Web.config中注册用户控件 <controls> <add tagPrefix="scottgu" src="~/Controls/Header.ascx" tagName="

强大的ASP.NET控件----用户控件对战自定义控件

用户控件:给特定程序使用 举例:用户控件之登陆 在VS中创建程序,如下 打开userControl.ascx,拖入如下控件: 打开UserControl.ascx下的UserControl.ascx.cs,写入如下代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls;

WPF自定义控件(五)の用户控件(完结)

用户控件,WPF中是继承自UserControl的控件,我们可以在里面融合我们的业务逻辑. 示例:(一个厌恶选择的用户控件) 后端: using iMicClassBase; using iMicClassBase.BaseControl; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.W

asp.net用户控件和自定义控件的区别

一: Web 用户控件 1.易于创建 2.为使用可视化设计工具的使用者提供有限的支持 3. 每个应用程序中需要控件的一个单独副本 4. 不能添加到 Visual Studio 中的工具箱 5. 适用于静态布局 Web 自定义控件 1.难于创建 2. 为使用者提供完全的可视化设计工具支持 3. 仅在全局程序集缓存中需要控件的单个副本 4. 可以添加到 Visual Studio 中的工具箱 5. 适用于动态布局 二: 用户控件(UserControl) : *.ascx是指页面中加载的功能块 自定

[Aaronyang] 写给自己的WPF4.5 笔记13[二维自定义控件技巧-可视化状态实战,自定义容器,注册类命令,用户控件补充]

 我的文章一定要做到对读者负责,否则就是失败的文章  ---------   www.ayjs.net    aaronyang技术分享 博文摘要:欢迎大家来支持我的<2013-2015 Aaronyang的又一总结,牧童遥指纳尼村>绝对好文章 关于<写给自己的WPF4.5 笔记14,已在官网发布> 1.讲解了自定义控件加入命令支持的两种手段,补充用户控件的客户定义模板 2.实战的方式讲解了无外观控件,可以让使用者定义模板,讲解模板PART,使用可视化状态组,动画的使用 效果演示: