zl程序教程

您现在的位置是:首页 >  其他

当前栏目

动态加载用户控件----以用户控件的方式达到代码分离的目的[转]

代码 方式 用户 动态 加载 控件 ---- 分离
2023-09-14 08:59:42 时间
from:http://kaliking.blog.51cto.com/58641/6738

原作: 《Asp.Net Forums2.0深入分析》之 Asp.Net Forums是如何实现代码分离和换皮肤的 http://webuc.net/dotey/archive/2004/05/28/834.aspx 模拟Asp.Net Forums实现可以换皮肤的控件  http://webuc.net/dotey/archive/2004/05/28/835.aspx 本人以VB代码实践了一次... 首先是基类,class1 Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.IO Namespace WebUC
    summary
    换皮肤控件基类
    /summary
    ParseChildren(True) _
    Public Class Class1: Inherits WebControl
        Implements INamingContainer         Dim skinFn As String = Nothing         Public Sub New()
            If (SkinFilename = Nothing) Then
                SkinFilename = "wc1.ascx"
            Else
                SkinFilename = skinFn
            End If
        End Sub         Protected Overrides Sub CreateChildControls()             Dim skin As Control             装载用户控件文件
            skin = LoadSkin()             初始化控件和对控件绑定
            InitializeSkin(skin)             Controls.Add(skin)
        End Sub         summary
        装载用户控件文件
        /summary
        returns /returns
        Protected Function LoadSkin() As Control
            Dim skin As Control             用户控件文件默认放在Themes目录下
            Dim skinPath As String = SkinFilename             是否定义了用户控件文件?
            If SkinFilename = Nothing Then Throw New Exception("必须定义SkinFilename属性,指定用户控件文件路径")             通过Page.LoadControl(defaultSkinPath)方法,从用户控件文件中获取 UserControl 对象
            Try
                skin = Page.LoadControl(skinPath)
            Catch ex As Exception
                Throw New Exception("用户控件文件未找到!")
            End Try             Return skin
        End Function         summary
        初始化控件,并绑定控件数据
        /summary
        param name="skin" /param
        Protected Overridable Sub InitializeSkin(ByVal skin As Control)         End Sub         summary
        用户控件文件路径
        /summary
        Public Property SkinFilename() As String
            Get
                Return skinFn
            End Get
            Set(ByVal value As String)
                skinFn = Value
            End Set
        End Property     End Class
End Namespace 然后是个用户控件 wc1.ascx: %@ Control Language="VB" AutoEventWireup="false" CodeFile="wc1.ascx.vb" Inherits="wc1" %
asp:TextBox ID="TextBox1" runat="server" wc1 /asp:TextBox
asp:Label ID="Label1" runat="server" Text="Label" /asp:Label
asp:CheckBox ID="CheckBox1" runat="server" /
最后是创建个页面文件,并根据SkinFilename属性加载用户控件: page1.aspx %@ Page Language="VB" AutoEventWireup="false" CodeFile="page1.aspx.vb" Inherits="page1" %
%@ Register TagPrefix="uc" Namespace="WebUC"%
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" html xmlns="http://www.w3.org/1999/xhtml"
head runat="server"
    title Untitled Page /title
/head
body
    form id="form1" runat="server"
    div
    uc:Class1 runat="server" SkinFilename="wc1.ascx" /
    /div
    /form
/body
/html 以上功能,一定程度上可以取代.net 2.0 的master母页,甚至可以说,更加简便 欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 330987132 | Go:217696290 | Python:336880185 | 做人要厚道,转载请注明出处!http://www.cnblogs.com/sunshine-anycall/archive/2009/10/14/1583228.html
Winform控件优化之自定义控件的本质【从圆角控件看自定义的本质,Region区域无法反锯齿的问题】 自定义控件的本质只有两点:重绘控件Region区域(圆角、多边形、图片等),这是整个控件的真实范围;重绘图形,在原有Region范围内,重绘不同的图形(圆角、多边形、图片等)作为背景......
WPF通过代码动态的加载样式 原文:WPF通过代码动态的加载样式 tabitem.SetResourceReference(TabItem.StyleProperty, mainTabItemStyle tabitem.Content = new Goods.GoodsMain();
用MVVM模式开发中遇到的零散问题总结(5)——将动态加载的可视元素保存为图片的控件,Binding刷新的时机 原文:用MVVM模式开发中遇到的零散问题总结(5)——将动态加载的可视元素保存为图片的控件,Binding刷新的时机 在项目开发中经常会遇到这样一种情况,就是需要将用户填写的信息排版到一张表单中,供打印或存档。
背景和问题 在app后sdk开发过程中,如果有遇到延时任务的时候,往往需要添加一个通用的loading控件用来展示给用户,一来为了提示用户当前有耗时的操作,二来降低用户的等待感提升用户体验。
COM组件开发实践(七)---多线程ActiveX控件和自动调整ActiveX控件大小(上) 声明:本文代码基于CodeProject的文章《A Complete ActiveX Web Control Tutorial》修改而来,因此同样遵循Code Project Open License (CPOL)。