zoukankan      html  css  js  c++  java
  • 控制項學習四(屬性與事件)

     

    .初探控制項屬性(Property)的建立

    1.當我們建立一個控制項(或類別),可以建立控制項的屬性(property),屬性多半是一個值,或是指到另外一個物件,或是一個集合。

    請注意,在該屬性宣告的時候,加上了【Default】關鍵字,所以該屬性為【預設屬性】,使用的時候比較特別,可以有底下這兩種用法,兩種使用方法的意義都一樣:

    Row.Item(0)=“測試”

    Row0=“測試”

    也就是說,預設屬性可以不用多打【item】這幾個字。但是由於語言的限制,所以預設屬性一定要是陣列類型。

    2.屬性可以是ReadOnly或是WriteOnly,如果您設計成ReadOnly,則屬性程式碼中不可有【Set】段落,同樣的,如果您設計成WriteOnly,則屬性中不可以具有【Get】段落。

    3.保留屬性的值

    一是用私有變量,二是用ViewState

    五.建立控制項的方法(Method

    可以將其視為一個Sub或是Function

    .建立控制項的事件(Event

    事件,是控制項中一個非常重要的機制,簡單的說,【事件】的意思,就是當控制項發生了什麽事情的時候,會呼叫到的函式,而我們提供一個介面,讓開發人員可以在這個介面裡面撰寫一些程式,達到某個效果。

    1. 建立一個事件

    <DefaultProperty("Text"), DefaultEvent("OnClick"), ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")> Public Class WebCustomControl1

        Inherits System.Web.UI.WebControls.WebControl

        '建立一個事件

        Public Event OnClick()

    …………

    End Class

    但是這個事件永遠不會發生,因為,我們從來沒有觸發這個事件。

    2. 觸發事件

    <DefaultProperty("Text"), DefaultEvent("OnClick"), ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")> Public Class WebCustomControl1

        Inherits System.Web.UI.WebControls.WebControl

        '建立一個事件

        Public Event OnClick()

        Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)

            '如果隱藏欄位裡面的值是控制項的 ClientID 則觸發 OnClick事件

            If Me.Page.Request.Form("For_WebCustomControl1") = Me.ClientID Then

                RaiseEvent OnClick()

            End If

            MyBase.OnLoad(e)

        End Sub

    Imports System.ComponentModel

    Imports System.Web.UI

    <DefaultProperty("Text"), DefaultEvent("OnClick"), ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")> Public Class WebCustomControl1

        Inherits System.Web.UI.WebControls.WebControl

        '建立一個事件

        Public Event OnClick()

        '底下的Render會產生一段按鈕的HTML 例如:<Button> 標題文字 </Button>

        Protected Overrides Sub Render(ByVal output As System.Web.UI.HtmlTextWriter)

            '註冊一個隱藏欄位

            Me.Page.RegisterHiddenField("For_WebCustomControl1", "")

            'Render控制項HTML

            Dim JavaScript As String

            '建立 Postback 用的 JavaScript

            JavaScript = "Form1.For_WebCustomControl1.value='" & Me.ClientID & "';Form1.submit();"

            output.AddAttribute("onclick", JavaScript)

            output.AddAttribute("id", Me.ClientID)

            output.AddAttribute("name", Me.ClientID)

            output.RenderBeginTag("button")

            output.Write(Me.Text)

            output.RenderEndTag()

        End Sub

        Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)

            '如果隱藏欄位裡面的值是控制項的 ClientID 則觸發 OnClick事件

            If Me.Page.Request.Form("For_WebCustomControl1") = Me.ClientID Then

                RaiseEvent OnClick()

            End If

            MyBase.OnLoad(e)

        End Sub

        '建立一個 Text 屬性,Render程式碼會用這個屬性作為按鈕的標題文字

        Dim _text As String

        <Bindable(True), Category("Appearance"), DefaultValue(""), Description("Text屬性的功能是...")> Property [Text]() As String

            Get

                Return _text

            End Get

            Set(ByVal Value As String)

                _text = Value

            End Set

        End Property

    End Class

    DefaultEvent("OnClick")——默認事件。當控制項Double-Click是,Vs.net會自動建立這個事件的程式碼骨架。

  • 相关阅读:
    使用 EasyBCD 安装Ubuntu 14.04 Error 15: file not found错误的解决方法
    浅谈程序猿的职业规划,看你如何决定自己的未来吧。
    [转载]DOS循环:bat/批处理for命令详解 (史上虽详尽的总结和说明~~)
    bat 批处理 字符串 截取
    window上使用GIT的个人经验(入门级)
    Android 访问 wcf
    解决 MyEclipse 10 中 JSp页面 “return false” 报错问题
    微信公共平台(码农在努力)
    Spring Cloud 中使用 Zipkin 追踪服务
    Spring Cloud Config 分布式配置中心
  • 原文地址:https://www.cnblogs.com/htht66/p/1334171.html
Copyright © 2011-2022 走看看