日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

[ASP.NET 控件实作 Day14] 继承 CompositeControl 实作 Toolbar 控件

發(fā)布時間:2024/4/15 asp.net 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [ASP.NET 控件实作 Day14] 继承 CompositeControl 实作 Toolbar 控件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

之前我們簡單介紹過繼承 CompositeControl? 來實作復合控件,在本文我們將以 Toolbar 控件為例,以復合控件的作法(繼承 CompositeControl )來實作 Toolbar 控件,此工具列控件包含 Items 屬性來描述工具列項目集合,依 Items 屬性的設定來建立工具列按鈕,另外包含 Click 事件可以得知使用按了那個按鈕。

程序代碼下載:ASP.NET Server Control - Day14.rar

?

一、工具列項目集合類別

工具列包含多個按鈕,新增 TBToolbarItem 類別來描述工具列項目,TBToolbarItem 類別包含 Key、Text、Enabled 三個屬性;而 TBToolbarItemCollection 為 TBToolbarItem 的集合類別來描述工具列按鈕集合。

?

二、實作 TBToolbar 控件

step1. 新增繼承 CompositeControl TBToolbar 控件

< _ Description("工具列控制項。"), _ ParseChildren(True, "Items"), _ ToolboxData("<{0}:TBToolbar runat=server ></{0}:TBToolbar>") _ > _ Public Class TBToolbar Inherits CompositeControl End Class

?

step2. 新增 Items 屬性,描述工具列項目集合

''' <summary> ''' 工具列項目集合。 ''' </summary> < _ Description("工具列項目集合。"), _ PersistenceMode(PersistenceMode.InnerProperty), _ DesignerSerializationVisibility(DesignerSerializationVisibility.Content), _ Editor(GetType(CollectionEditor), GetType(UITypeEditor)) _ > _ Public ReadOnly Property Items() As TBToolbarItemCollection Get If FItems Is Nothing Then FItems = New TBToolbarItemCollection() End If Return FItems End Get End Property

?

step3. 新增 Click 事件

TBToolbar 類別新增 Click 事件,當按下按鈕時會引發(fā) Click 事件,由 Click 的事件自變量 e.Key 可以得知使用者按了那個按鈕。

''' <summary> ''' Click 事件引數(shù)。 ''' </summary> Public Class ClickEventArgs Inherits System.EventArgs Private FKey As String = String.Empty? ''' <summary> ''' 項目鍵值。 ''' </summary> Public Property Key() As String Get Return FKey End Get Set(ByVal value As String) FKey = value End Set End Property End Class? ''' <summary> ''' 按下工具列按鈕所引發(fā)的事件。 ''' </summary> < _ Description("按下工具列按鈕所引發(fā)的事件。") _ > _ Public Event Click(ByVal sender As Object, ByVal e As ClickEventArgs)? ''' <summary> ''' 引發(fā) Click 事件。 ''' </summary> Protected Overridable Sub OnClick(ByVal e As ClickEventArgs) RaiseEvent Click(Me, e) End Sub

?

step4. 建立工具列按鈕集合

覆寫 CreateChildControls 方法,依 Items 屬性的設定,來建立工具列中的按鈕集合。每個按鈕的 Click 事件都導向 ButtonClickEventHandler 方法,來處理所有按鈕的 Click 動作,并引發(fā) TBToolbar 的 Click 事件。

Private Sub ButtonClickEventHandler(ByVal sender As Object, ByVal e As EventArgs) Dim oButton As Button Dim oEventArgs As ClickEventArgs? oButton = CType(sender, Button) oEventArgs = New ClickEventArgs() oEventArgs.Key = oButton.ID OnClick(oEventArgs) End Sub? ''' <summary> ''' 建立子控制項。 ''' </summary> Protected Overrides Sub CreateChildControls() Dim oItem As TBToolbarItem Dim oButton As Button? For Each oItem In Me.Items oButton = New Button() oButton.Text = oItem.Text oButton.Enabled = oItem.Enabled oButton.ID = oItem.Key AddHandler oButton.Click, AddressOf ButtonClickEventHandler Me.Controls.Add(oButton) Next MyBase.CreateChildControls() End Sub

?

三、測試程序

在頁面拖曳 TBToolbar 控件,并設定 Items 屬性,如入新增、修改、刪除三個按鈕。

在 TBToolbar 控件的 Click 事件加入測試程序代碼,輸出引發(fā) Click 事件的 e.Key。

Protected Sub TBToolbar1_Click(ByVal sender As Object, ByVal e As Bee.Web.WebControls.TBToolbar.ClickEventArgs) Handles TBToolbar1.Click Me.Response.Write(String.Format("您按了 {0}", e.Key)) End Sub

?

執(zhí)行程序,當按了工具列上的按鈕時,就會引發(fā) Click 事件,并輸出該按鈕對應的 Key。

總結

以上是生活随笔為你收集整理的[ASP.NET 控件实作 Day14] 继承 CompositeControl 实作 Toolbar 控件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。