程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET控件開發基礎(3)

ASP.NET控件開發基礎(3)

編輯:關於ASP.NET

上次講了在繼承Control類的時候為什麼需要重寫Render方法

本次來介紹控件的事件處理. 我們知道Button控件有OnClick事件,DropDownList控件有SelectedIndexChanged事件.

一.回發事件和客戶端回發

下面來看一個最簡單的例子

按鈕單擊事件

1 protected void Button1_Click(object sender, EventArgs e)
2   {
3     Label1.Text = "你好: "+TextBox1.Text;
4   }

大家知道Web 服務器控件創建的按鈕的類型有三種

1.Button

2.LinkButton

3.ImageButton

打開MSDN看到三個控件都繼承IPostBackEventHandler接口

IPostBackEventHandler接口專門定義了處理回發事件的方法,說白了就是onclick事件,如果自定義控件需要處理回發事件,你就需要繼承IPostBackEventHandler接口,然後實現接口的RaisePostBackEvent 方法,另外一個簡單的方法就是直接繼承Button控件就可以了.

RaisePostBackEvent方法用於處理窗體發送給服務器時引發的事件,方法中有一個參數eventArgument 表示要傳遞到事件處理程序的可選事件參數的 String

下面總結處理回發事件,必須要做的步驟

(1)繼承並實現IPostBackEventHandler接口的RaisePostBackEvent方法

(2)為表單元素定義UniqueID,以與IPostBackEventHandler服務器控件的UniqueID相對應

相應實現代碼如下

示例一

namespace CustomControls
{
   public class SuperButton1 : Control, IPostBackEventHandler
   {
     // 聲明Click事件委托
     public event EventHandler Click;

     // 定義OnClick事件處理程序
     protected virtual void OnClick(EventArgs e)
     {
       if (Click != null)
       {
         Click(this, e);
       }
     }

     // 實現RaisePostBackEvent方法,處理回發事件
     public void RaisePostBackEvent(string eventArgument)
     {
       OnClick(EventArgs.Empty);
     }

     protected override void Render(HtmlTextWriter output)
     {
       output.Write("<INPUT TYPE=submit name=" + this.UniqueID +
        " Value='確定' />");
     }
   }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved