控制項學習四(屬性與事件)
四.初探控制項屬性(Property)的建立
1.當我們建立一個控制項(或類別),可以建立控制項的屬性(property),屬性多半是一個值,或是指到另外一個物件,或是一個集合。
請注意,在該屬性宣告的時候,加上了【Default】關鍵字,所以該屬性為【預設屬性】,使用的時候比較特別,可以有底下這兩種用法,兩種使用方法的意義都一樣:
Row.Item(0)=“測試”
Row(0)=“測試”
也就是說,預設屬性可以不用多打【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會自動建立這個事件的程式碼骨架。
转载于:https://www.cnblogs.com/htht66/archive/2008/11/15/1334171.html
控制項學習四(屬性與事件)相关推荐
- 控制項學習三(從繼承開始)
三.從繼承開始 1.繼承控制項 所有的控制項設計,都是從繼承一個物件而來. 當我們建立一個新的控制項專案,系統會自動生成一些程式碼,例如, Inherits System.Web.UI.WebCont ...
- [課程筆記] 機器學習2021(李弘毅) L32.概述增強式學習(四)
Reward Shaping Sparse Reward 许多场景中,大多数情况下并没有奖励,像是: 围棋: 平常落子没有奖励,只有棋局结束时才有奖励(输/赢) 机器人栓螺丝: 大多数动作都没有奖励, ...
- 從turtle海龜動畫 學習 Python - 高中彈性課程系列 9 Python 物件導向介紹
"Talk is cheap. Show me the code." ― Linus Torvalds 老子第41章 上德若谷 大白若辱 大方無隅 大器晚成 大音希聲 大象無形 道 ...
- 從turtle海龜動畫學習Python-高中彈性課程1
Goal: 藉由有趣的「海龜動畫繪圖」學會基礎的 Python 程式設計 本篇介紹本彈性課程之開設由來, 以及一些供後續查閱之Python 之細節, 方便後面再回頭交叉索引之內容, 文獻等 " ...
- python操作txt找到最便宜的素菜_Python線性模型學習筆記
歡迎關注Python愛好者社區,我們是專註於商業智能BI,大數據,數據分析領域的垂直社區,學習,問答.求職一站式搞定! 天善學院618活動正在進行中!天善學院618大禮包,大數據.數據分析與數據挖掘. ...
- 用免費的電腦資源協助數學的教學,學習與探索_復華中學教師營_中山大學應數系高中數學人才班_2021
"Talk is cheap. Show me the code." ― Linus Torvalds 摘要: 直到, 在學習 R 語言的過程, 才發現有 Markdown 這種文 ...
- 從turtle海龜動畫 學習 Python - 高中彈性課程系列 3 烏龜繪圖 所需之Python基礎
"Talk is cheap. Show me the code." ― Linus Torvalds 老子第41章 上德若谷 大白若辱 大方無隅 大器晚成 大音希聲 大象無形 道 ...
- 從turtle海龜動畫 學習 Python - 高中彈性課程系列 11.2 maze 迷宮 - 用 turtle 呈現演算法之執行動作
Goal: 藉由有趣的「海龜動畫繪圖」學會基礎的 Python 程式設計 本篇介紹 Python 海龜繪圖 呈現迷宮演算法等 "Talk is cheap. Show me the code ...
- 從turtle海龜動畫 學習 Python - 高中彈性課程系列 6.1 內嵌正多邊形 類似禪繞圖
Goal: 藉由有趣的「海龜動畫繪圖」學會基礎的 Python 程式設計 本篇介紹基礎的 Python 海龜動畫繪圖, 確實可以只以簡單的指令畫出極為複雜有趣或美麗的圖案: 內嵌正多邊形之圖案, 禪繞 ...
最新文章
- 内存储器和cpu一起构成了计算机,计算机系统的组成
- 与殿堂级大师隔空对话——一张纸是怎么限制了我们的想象力
- 什么是java中的枚举法_enum枚举javajava,enum枚举使用详解+,总结
- pythonajax学习_python学习-- django 2.1.7 ajax 请求
- 深入理解继承知识(下)
- 虚拟机vmware vmnet8 未识别(转)
- 使用runtime跳转界面
- spring与jdk版本要求
- linux 查找内容对应行数,Linux查看文件指定行数内容与查找文件内容
- 转自 静心梦工厂
- ML-Agents 安装配置 【ML-Agents 官方文档翻译(ML-Agent 1.9.1,Unity 2018-2020)】
- 10019---SpringBoot简介
- 上证50基金有哪些_【宽基系列】上证50指数基金买哪个?
- 关于oracle导入数据出现字符集问题及一点点解决办法!
- 编程王 kingofcoders.com
- 如何检索IDC研究报告?
- Spring入门书籍
- 微信小程序 发布后强制更新版本 强制覆盖老版本
- Samsara v2.0 高级技巧
- NCCL源码解析②:Bootstrap网络连接的建立
热门文章
- pytorch argmax_PyTorch深度学习模型的服务化部署
- suse linux运行asp,Linux Supervisor的安装与使用入门---SuSE
- 筛选样本_早产预测准确性创新高!3种样本PK,首次利用脂质组学筛选出生物标志物...
- 本科阶段计算机专业的科学体系,【学习方法】一位大三本科生的计算机科学与技术学习反思录...
- win8 网络 计算机,win8系统下,如何使电脑成为无线路由器?
- oracle odi 资料档案库访问期间出现未分类的异常错误,oracle学习_基本语法
- java非法字符检测_Java Web 一些特殊字符的过滤(appscan检查的安全问题)
- 直接学python3_学习python用python2还是python3
- brave浏览器_火狐联创、Java Script之父,居然也来倒腾区块链浏览器?
- callback函数_Nodejs 源码解析 util.promisify 如何将 Callback 转为 Promise