Chapter 4 基本伺服器控制項.

Slides:



Advertisements
Similar presentations
醫學美學之我見ー肉毒桿菌 班級:應日三乙 姓名:蔡雅卉 學號: 497E0076. 前言 現在的人,已經把 整型看做是微不足 道的事情了。即使 只是戴牙套、局部 雷射、割雙眼皮、 打美白針、肉毒桿 菌等等,都可以在 身體上做不同的改 變,而讓自己更滿 意自己的外表。
Advertisements

計算機程式及實習 Computer Program Design and Experiment) 期末報告 ppt 南台科技大學機械工程系 姓名 : 蔡中銘 學號 :4A 授課老師 : 謝慶存大帥哥.
第二章 VB的编程机制 【授课时间】第3周,第2次课 【授课题目】 2.1 面向对象程序设计概述 2.2 VB中的对象
計算機程式及實習 期末報告 題目:商店結帳系統
硕士论文开题报告 煤炭企业物流信息系统的 研究与设计 指导老师: 学生姓名: 学 号:
讲故事训练 授课人:田轶.
说网络技术专业 江苏联合职业技术学院徐州财经分院 王 磊.
高一年级过渡性学习 活动汇报 高一年级组 教科研室 汉滨高中.
第十一課 菜園 6-11.
校本选修课 第三专题 西藏问题 北京师大二附中 李文燕.
第一章 認識 Visual Basic 本章投影片僅供本書上課教師使用,非經同意請勿拷貝或轉載
第二章 餐饮组织结构设计.
Access数据库知识 安丘市职业中专 雷云龙.
网站如何定制建设???.
正修科技大學教學發展中心 教師教學觀摩與經驗分享 電子工程系 張法憲副教授.
課程名稱:程式設計 授課老師:________
《ASP.NET数据库网站设计教程(C#版)》
第6章 HTML控件和Web服务器控件 本章讲述的主要内容 6.1 ASP.NET控件概述 6.2 标准服务器端控件 6.3 数据验证控件
在线考试系统 答辩人: 朱允昌、朱碧云、张海燕 汇报时间: 指导老师: 任艳、徐怡 软件应用与开发类
蘇軾詞的賞析
模块七 信息获取与发布 第8章 计算机网络信息的获取与发布.
本章投影片僅供本書上課教師使用,非經同意請勿拷貝或轉載
《计算机网络技术》 asp.net 程序设计 文本类控件 笪静.
柯奕宏(06) 王予亨(13) 郭秉逸(15) 楊雯凈(23) 顏佑瑩(32)
5.1 – 表格(FORM) 輸入元素 : 兩種傳遞方法 : GET or POST 範例 1. 文字欄位 Text box
第十五章 传播学调查研究方法.
Chapter 7 網頁應用程式與狀態管理.
題目:台灣客運 南臺科技大學 機械工程系 班級:奈米一乙 學號:4A 姓名:蔡政堯 授課教師:謝慶存
《ASP.NET数据库网站设计教程(C#版)》
CH10.
C# 程式設計 第一部分 第1-4章 C# 程式設計 - 南華大學資管系.
Chapter 15 聊天室.
程式簡介、VB、物件導向 國立北門高中 林明璋.
 全能的天才畫家- 李奧納多‧達文西 (西元1452年-1519年) 指導老師:袁淑芬老師 製作人:饒佩芯.
《ASP.NET数据库网站设计教程(C#版)》
課程名稱:程式設計 授課老師:________
Chapter 5 進階伺服器控制項.
Chapter 1 複習.
網路點名系統 致遠管理學院網路通訊學系 張逸中 2007/6/22.
Asp.net 基礎.
第16章 Windows Form與資料繫結 16-1 資料繫結的基礎 16-2 在專案新增資料來源 16-3 使用資料來源建立單筆編輯表單
在 Web 应用中,导航是非常重要的。ASP
Chapter 12 T-SQL 語法與 ASP.NET.
巨集病毒與VBA.
程式語言 -Visual Basic 變數、常數與資料型態.
第一章 Visual Studio、SQL Server介紹與開發環境
第一章 VB概述 本章重点和难点 1.1 VB 概述 1.2 面向对象的程序设计方法基础
第4章 視窗應用程式的基本輸出入 4-1 物件基礎程式設計 4-2 表單控制項 4-3 按鈕控制項 4-4 資料輸出的標籤控制項
WEB伺服器控制項.
委派與執行緒 建國科技大學 資管系 饒瑞佶.
移动电子商务 第十二章 Windows Mobile应用案例 倚动软件工厂实验室.
第10章 網頁資料庫的顯示與維護 10-1 再談資料控制項 10-2 GridView控制項 10-3 DetailsView控制項
Ch03 基本輸出入介面設計 視窗程式設計 授課教師:王大瑾.
課程名稱:_____________ 指導教授:_____________
Visual Basic.NET 程序设计语言课程内容
第4章 視窗應用程式的基本輸出入 4-1 物件基礎程式設計 4-2 表單控制項 4-3 按鈕控制項 4-4 資料輸出的標籤控制項
大專院校美食網- 以新北市為例 商務科技管理專題 組 別: 第二組 專題成員: 方采薇 陳宜欣
VB语言程序设计教程.
第18章 個人入口網站的建立 18-1入口網站的基礎 18-2 建立網站的搜尋引擎 18-3 網頁組件的個人化功能
补充:c#语言基础.
Chapter 2 基本語法.
C# 基本語法、變數.
第 11 章 功能表列與工具列的設計 & 第 10 章 檔案.
第4章 ASP.NET服务器控件.
2012温州市“深化普通高中课程改革”信息技术学科培训
1 打开 SQL Server 2005 安装盘,单击 SPLASH.HTA 文件进行安装,安装界面如图所示。
Chapter 17 購物網站 (1) - 產品目錄與購物車.
第1章 ASP.NET基础.
IT DNA- 微軟MVP、資深IT人胡百敬 資訊產業全攻略!IT知識工作者聯手推薦! 資訊新鮮人》 專業資訊人》 知識工作者》
手机淘宝“变形”产品—微淘 操作流程指南 (内测版).
Presentation transcript:

Chapter 4 基本伺服器控制項

本章提要 4 - 1 認識 Web Form 與控制項 4 - 2 元件在網頁上的位置調整 4 - 3 顯示文字的 Label 、Literal 控制項 4 - 4 送出資料的按鈕-Button、LinkButton、ImageButton 控制項 4 - 5 TextBox 控制項-輸入文字的欄位 4 - 6 Postback 觀念與非按鈕控制項的事件觸發 4 - 7 預設按鈕與預設焦點

4 - 1 認識 Web Form 與控制項 什麼是 Web Form 事件驅動程式設計 什麼是控制項

什麼是 Web Form ASP.NET 中, 一個 Web Form 就是一個網頁。 在 VWD 的設計模式下, Web Form 就像是一張空白的畫布, 您可以在這張畫布以滑鼠拉曳的方式, 隨意放上自己想要的元件, 例如按鈕、文字欄...等, 設計出網頁程式的外觀:

什麼是 Web Form

什麼是 Web Form 除了放置元件以外, Web Form 也是各元件表演的舞台, 所有元件的運作, 都是在 Web Form 上面執行。 所以在 ASP.NET 中要製作動態網頁, 首先便必須新增一個 Web Form, 然後才能開始設計網頁程式。

事件驅動程式設計 在 Web Form 上面設計完外觀後, 如果要讓網頁『動』起來, 只要分別指定元件的各種『事件』 (Event) 發生時, 程式相對應的動作即可。 所有網頁上可能產生的狀況, 不論是頁面載入、按下按鈕...等都會觸發對應的事件, 例如按鈕 A 被按下 (click) 所觸發的事件, 便稱為按鈕 A 的 Click 事件, 您可以指定當發生此事件時, 會觸發一段程式執行某些動作:

事件驅動程式設計

事件驅動程式設計 所以『指定元件→選擇事件→撰寫事件處理程序』, 就是在 ASP.NET 中設計網頁程式的基本方式。 整個 Web Form 其實就是由不同元件 (物件) 所組成, 然後以事件來驅動的程式, 這便是前面第二、三章都曾經提到的『事件驅動程式設計』。

什麼是控制項 在 Web Form 上面的各個元件, 例如按鈕、文字框...等, 並不是所有元件都具備『動』 起來的能力。在 ASP.NET 網頁上可以動的元件, 稱為控制項 (Control)。

控制項的種類 控制項可以分成 HTML 伺服器控制項與 Web 伺服器控制項兩種, 我們先來觀察這兩種控制項。筆者在 Web Form 的設計模式新增以下兩個按鈕控制項 (新增控制項的方式隨後會說明):

控制項的種類 切換至原始檔模式

控制項的種類 從上面可以看到一個明顯的區別, HTML 伺服器控制項是由具備 runat = "server" 屬性的 HTML 標籤所產生, 而 Web 伺服器控制項則是 <asp:xxx> 格式標籤所產生的, 下面將分別說明這兩種控制項。

HTML 伺服器控制項 在 ASP.NET 網頁中, 沒有 runat = "server" 屬性的一般 HTML 標籤, 都無法在 ASP.NET 網頁程式中針對其進行動態處理, 亦即您無法透過 ASP.NET 讓這些 HTML 標籤『動』起來。

HTML 伺服器控制項 不過如果您在 HTML 標籤中加上 runat = "server" 屬性, 則其將搖身一變, 成為 HTML 伺服器控制項, ASP.NET 看到這個屬性, 便會以 System.Web.UI.HtmlControls 命名空間中對應的類別產生物件, 以供程式處理。 如果您想要將網頁上的 HTML 標籤改成 HTML 伺服器控制項, 請在 VWD 的設計模式如下操作:

HTML 伺服器控制項

HTML 伺服器控制項

Web 伺服器控制項 每個 HTML 伺服器控制項都是由一個 HTML 標籤轉變而來的, 不過 Web 伺服器控制項便不同, 它們是 ASP.NET 特別提供的控制項。 幾乎所有網頁需要的元件, 例如按鈕、表格、項目、圖片...等, 都可以用 Web 伺服器控制項來製作, 所以絕大部分情況下, 當您設計 ASP.NET 網頁程式時, 可以全部使用 Web 伺服器控制項, 而不需要動用任何 HTML 伺服器控制項。

Web 伺服器控制項 Web 伺服器控制項除了產生按鈕、文字框...等基本的 HTML 元件以外, 還有許多功能強大的控制項, 例如月曆、廣告輪播、網站地圖...等。 在 VWD 內設計 Web Form 時, 旁邊工具箱除了 HTML 分類下的元件, 其他元件全部都是 Web 伺服器控制項, 請如下操作觀察 Web 伺服器控制項:

Web 伺服器控制項

Web 伺服器控制項

Web 伺服器控制項 存檔後請在原始檔模式窗格內按滑鼠右鈕, 執行在瀏覽器中檢視, 即可在瀏覽器中看到月曆的效果。 如果您在瀏覽器中檢視網頁原始碼, 會看到下面語法:

Web 伺服器控制項

Web 伺服器控制項 從上面的例子, 您可以看到 Web 伺服器控制項使用方便而且功能強大, 只要用滑鼠拉曳元件, 建立一行 <asp:xxx> 語法, 就可以做出單純使用 HTML 語法要寫半天的效果:

Web 伺服器控制項 由於 Web 伺服器控制項幾乎包含所有 HTML 伺服器控制項的效果, 而且還擁有更豐富的功能, 所以本書設計網頁程式時, 將以 Web 伺服器控制項為主, 在隨後章節中, 也會陸續為您介紹各 Web 伺服器控制項的使用方法。

4 - 2 元件在網頁上的位置調整 預設的位置定位方式 使用絕對位置隨意調整元件位置 使用相對位置設定元件間的相對距離 修改預設的位置定位方式

預設的位置定位方式 當您在 Web Form 上面設計網頁外觀時, 會發現預設狀態下, 各元件的位置定位方式有點像在記事本或是 Word 輸入文字一樣:

預設的位置定位方式 如果您有網頁設計經驗, 會知道這種定位原本就是 HTML 排版的方式, 這種定位稱為靜態位置。

使用絕對位置隨意調整元件位置 若您希望能在 Web Form 上面隨意設定元件的位置, 請如下操作:

使用絕對位置隨意調整元件位置

使用絕對位置隨意調整元件位置 所以只要如上設定使用絕對位置, 便可以隨意地調整元件的位置。

使用相對位置設定元件間的相對距離 除了靜態位置與絕對位置外, ASP.NET 還有一種相對位置的定位方式, 請如下操作測試相對位置:

使用相對位置設定元件間的相對距離

使用相對位置設定元件間的相對距離

使用相對位置設定元件間的相對距離

使用相對位置設定元件間的相對距離

修改預設的位置定位方式 VWD 預設排列位置的方式為靜態位置, 雖然可以個別調整元件的位置設定, 但是若元件的數量不少, 一一設定也實在很麻煩。 此時您可以執行『配置 / 位置 / 自動定位選項』命令, 修改預設的位置定位方式:

修改預設的位置定位方式

4 - 3 顯示文字的 Label、Literal 控制項 瞭解了 Web Form 與控制項的意義, 以及網頁上調整元件位置的方式之後, 隨後將開始說明各種 Web 伺服器控制項的使用方法, 一邊學習控制項, 也一邊學習 ASP.NET 的程式設計方式。

Label 控制項 當您想要在網頁上顯示靜態的文字時, 只要在設計模式中直接輸入文字即可。

建立 Label 控制項 請依下面方式操作, 於 Web Form 上面加入與設定 Label 控制項:

建立 Label 控制項

建立 Label 控制項 上面操作中, 您可以看到 Label 控制項的 Text 屬性是用來控制要顯示什麼文字, 所以未來在程式中只要修改某個 Label 控制項的 Text 屬性, 便可以改變該控制項於網頁上顯示的文字。 在 VWD 中選取網頁中的控制項時, 控制項的屬性都會列在屬性窗格內, 窗格下方也會簡要顯示說明各屬性用途, 所以您不需要特別記憶控制項的屬性。

建立 Label 控制項 此外, 在 Label 或隨後各控制項的屬性窗格內行為分類之中, 還有很多關於驗證、主題...等屬性, 這些屬性會在後續章節介紹。

控制項的 ID 就像人要有姓名或代號才能互相稱呼一樣, Web Form 上的每個控制項也都有一個識別碼 (ID), 這樣在程式中才能明確指定要處理哪一個控制項。 當您在 Web Form 上面建立控制項時, VWD 會自動賦予控制項一個預設 ID 識別碼, 您可以在該控制項的屬性窗格看到預設 ID 值, 也能直接將其改為好記的名稱:

控制項的 ID 有了 ID 識別碼之後, 在程式中只要使用 "ID.屬性" 的格式, 便可以存取其屬性, 例如 "Welcome.Text“ 便表示要存取 ID 為 Welcome 的控制項之 Text 屬性。

使用程式存取與修改 Label 控制項的屬性 請依照前面的說明, 在 Web Form 中新增另一個 Label 控制項, 並如下設定其屬性:

使用程式存取與修改 Label 控制項的屬性 目前 Web Form 共有兩個 Label 控制項:

使用程式存取與修改 Label 控制項的屬性 在瀏覽器檢視執行結果

使用程式存取與修改 Label 控制項的屬性 接著請依照 3-1 節的說明, 建立 Page_Load 事件程序 (Page 物件代表目前正在執行的網頁, 而網頁被載入是一個事件, 至於 Page_Load 就是此事件所觸發的程序)。 請您在其中輸入以下程式碼:

使用程式存取與修改 Label 控制項的屬性

使用程式存取與修改 Label 控制項的屬性 執行結果:

使用程式存取與修改 Label 控制項的屬性 從上面的例子可以看到如何使用程式來修改控制項的屬性, 每一種控制項都有許多不同用途的屬性。 不過再次提醒您, 控制項的屬性都會列在其屬性窗格內, 下方也會簡要說明各屬性用途, 所以您不需要特別記憶控制項的所有屬性。

Literal 控制項 Literal 控制項與前述的 Label 控制項具備相同功能, 都能以程式控制顯示文字。 不過 Label 控制項具有許多樣式方面的屬性, 例如顏色、粗斜體、底線...等, 而 Literal 控制項則沒有樣式的屬性, 只能單純地將文字顯示於網頁上, 下面示意圖說明兩者的差異:

Literal 控制項

Literal 控制項 從上面可以看到, Label 控制項轉成 HTML 時, 會自動加上 <span> 標籤, 以顯示各種樣式效果;如果您不想要 ASP.NET 幫您 『加工』, 只想直接輸出單純的文字時, 就必須使用 Literal 控制項。 在 Web Form 中使用 Literal 控制項的方式如下:

Literal 控制項

Literal 控制項 此外, 請依照前面的說明, 在 Web Form 中新增另一個 Label 控制項, 並如下設定其屬性:

Literal 控制項 接著請建立 Page_Load 事件程序, 然後輸入以下程式碼, 並且在瀏覽器檢視執行結果:

Literal 控制項

Literal 控制項

Literal 控制項 在瀏覽器中檢視網頁原始碼

4 - 4 送出資料的按鈕-Button、LinkButton、ImageButton 控制項 按鈕可說是目前程式最不可缺少的一項元件, 不論是圖形或是網頁程式, 大多都需要按鈕讓使用者進行確認或送出資料。

按鈕的 Click 事件 按鈕最重要的一項特性是當使用者按下時, 按鈕會發出 Click 事件, 所以您可以在程式中設計一個對應的程序, 設定一旦收到按鈕的 Click 事件, 就觸發該程序執行某些動作:

使用 Button 控制項建立按鈕 請在 VWD 中如下操作以新增按鈕並設定對應 Click 事件的程序:

使用 Button 控制項建立按鈕

使用 Button 控制項建立按鈕 上面可以看到 VWD 自動建立了 ButtonA_Click 程序, 當 ButtonA 被按下而發出 Click 事件時, 便會觸發此程序, 所以您可以在 ButtonA_Click 程序內設計要執行的動作。 請在 ButtonA_Click 程序內輸入下面程式碼, 並且在瀏覽器檢視執行結果:

使用 Button 控制項建立按鈕

使用 Button 控制項建立按鈕 因為 ButtonA_Click 程序內的程式碼會修改 ButtonA 按鈕的 Text 屬性, 所以按下 ButtonA 時便會修改自己所顯示的文字:

多個按鈕的 Click 事件 如果 Web Form 上面有多個按鈕, 其設計的方法仍然與前述單一按鈕相同, 只要在設計模式下分別雙按各按鈕, 便可以個別建立各按鈕 Click 事件的處理程序。

多個按鈕的 Click 事件 請在 Web Form 中新增 2 個 Button 控制項與 1 個 Label 控制項, 並如下設定其屬性:

多個按鈕的 Click 事件 接著請在設計模式下分別雙按 Button1 與 Button2, 建立 Button1_Click 與 Button2_Click 程序, 在其中輸入以下程式碼:

多個按鈕的 Click 事件 在瀏覽器檢視執行結果:

多個按鈕的 Click 事件

LinkButton 控制項-連結形式的按鈕 LinkButton 控制項是一種連結形式的按鈕, 功能與前述 Button 控制項一樣, 但是具有不同的外觀:

LinkButton 控制項-連結形式的按鈕 LinkButton 控制項的原理與使用方法皆與 Button 控制項相同, 所以此處不再贅述, 直接以範例說明。請在 Web Form 中新增 2 個 LinkButton 控制項與 1 個 Label 控制項:

LinkButton 控制項-連結形式的按鈕 除了上面說明的屬性外, 請再如下設定 Label 控制項的屬性:

LinkButton 控制項-連結形式的按鈕 接著請在設計模式下雙按 EnableCP 與 DisableCP, 建立 EnableCP_Click 與 DisableCP_Click 程序, 在其中輸入以下程式碼:

LinkButton 控制項-連結形式的按鈕 在瀏覽器檢視執行結果:

LinkButton 控制項-連結形式的按鈕

ImageButton 控制項-圖形式按鈕 ImageButton 控制項是圖形式的按鈕, 功能與前述 Button、LinkButton 控制項一樣, 但是可以指定圖片做為按鈕的外觀, 所以使用 ImageButton 控制項時, 必須先準備好圖片。 ImageButton 控制項的原理與使用方法皆與 Button 控制項相同, 所以此處不再贅述, 直接以範例說明。 請在 Web Form 中新增 1 個 ImageButton 控制項與 2 個 Label 控制項, 並如下設定其屬性:

ImageButton 控制項-圖形式按鈕

ImageButton 控制項-圖形式按鈕 ImageButton 控制項的 ImageUrl 屬性是用來設定圖片的 URL 位址, 上例中筆者使用旗標網站的圖片來當作圖形按鈕。

ImageButton 控制項-圖形式按鈕 除了使用外部圖片外, ImageButton 控制項當然也可以使用本身網站的圖片, 關於如何在 ASP.NET 中使用本身網站圖片的方法, 請參閱本書 2-33 頁。 接著請在設計模式下雙按 Go 按鈕, 建立 Go_Click 程序, 在其中輸入以下程式碼:

ImageButton 控制項-圖形式按鈕

ImageButton 控制項-圖形式按鈕

ImageButton 控制項-圖形式按鈕 在瀏覽器檢視執行結果:

4 - 5 TextBox 控制項-輸入文字的欄位 前面透過示意圖與範例程式, 說明了什麼是 『事件驅動程式設計』, 此外也已經為您介紹多種按鈕與動態顯示文字的控制項。 不過網頁程式上面除了動態文字與按鈕, 當然少不了讓使用者輸入文字的欄位, 這種欄位可以透過 TextBox 控制項來建立, 本節將說明 TextBox 控制項的屬性與使用方法。

使用 TextBox 控制項建立輸入欄位 請在 VWD 中如下操作以建立輸入欄位:

使用 TextBox 控制項建立輸入欄位 在瀏覽器檢視執行結果

使用 TextBox 控制項建立輸入欄位 上面例子可以看到 TextBox 控制項的 Text 屬性代表欄位中的文字, 所以未來程式要讀取使用者輸入的文字時, 也是從 Text 屬性即可取得。 接著便將說明如何搭配按鈕, 讀取使用者所輸入的資料。 請在 Web Form 中各建立 1 個 TextBox、Button、Label 控制項, 並如下設定其屬性:

使用 TextBox 控制項建立輸入欄位

使用 TextBox 控制項建立輸入欄位 接著請在設計模式下雙按 Button1 按鈕, 建立 Button1_Click 程序, 在其中輸入以下程式碼:

使用 TextBox 控制項建立輸入欄位 在瀏覽器檢視執行結果:

使用 TextBox 控制項建立輸入欄位

使用 TextBox 控制項建立輸入欄位 如果不輸入名字, 直接按送出鈕, 則網頁會顯示提醒語如下:

可輸入密碼或是多行文字的欄位 TextBox 控制項所建立的欄位預設只能輸入單行資料, 不過有時候留言板之類的網頁需要讓使用者一次輸入多行資料, 或者有的欄位想要讓使用者輸入密碼, 為了安全考量希望不要將文字顯示於螢幕上。 要建立這些不同用途的輸入欄位, 只要修改 TextBox 控制項的 TextMode 屬性即可:

可輸入密碼或是多行文字的欄位

可輸入密碼或是多行文字的欄位

可輸入密碼或是多行文字的欄位 建立多行欄位時, 除了上述超過欄位長度會出現垂直捲動軸以外, 也可以使用 Wrap 屬性, 設定超過欄位寬度時, 是否出現水平捲動軸:

可輸入密碼或是多行文字的欄位

使用多行的 TextBox 控制項建立留言板 到這裡我們已經說明了 TextBox 以及其他多個控制項的屬性, 因此可以學以致用, 用 TextBox、Button 與 Label 控制項, 來建立一個簡單的留言板程式。 由於我們還沒有學到如何將資料存放於檔案或資料庫, 所以這裡的留言板程式將只接收使用者輸入的文字, 然後單純地顯示於網頁上。雖然不是一個真的留言板, 但是可以讓我們練習程式的寫作。

使用多行的 TextBox 控制項建立留言板 請在 Web Form 中各建立 1 個 TextBox、Button 與 Label 控制項, 並如下設定其屬性:

使用多行的 TextBox 控制項建立留言板

使用多行的 TextBox 控制項建立留言板 當使用者在 TextBox 控制項內輸入文字, 然後按下 Button 控制項, 此時會產生按鈕的 Click 事件, 因此觸發相對應的事件處理程序, 這個流程在前面範例已經練習過許多次了。 而這個簡易留言板程式著重的地方, 在於如何撰寫 Click 的事件處理程序, 將使用者留言顯示於網頁。下面是我們將使用的處理流程:

使用多行的 TextBox 控制項建立留言板

使用多行的 TextBox 控制項建立留言板 您會注意到上面流程中有一個處理留言的步驟, 其實如果只要讀取文字然後顯示留言, 並不需要這個步驟, 但是因為網頁使用 HTML 語法顯示文字, 而在 HTML 語法中, 空白必須使用 “ ” 符號來表示, 另外換行也要使用 "<br/>" 標籤, 所以程式讀取使用者輸入的純文字後, 應該將空白代換為 " ", 換行代換為 "<br/>", 才能正常地將留言顯示於網頁上。

使用多行的 TextBox 控制項建立留言板 各控制項的 Text 屬性都是 .NET Framework 的 String 類別的物件, 可呼叫其 Replace() 方法進行字串代換。將舊字串代換為新字串的語法如下: 瞭解邏輯流程以及代換字串的方式後, 接著請在設計模式下雙按 Button1 按鈕, 建立 Button1_Click 程序, 在其中輸入以下程式碼:

使用多行的 TextBox 控制項建立留言板

使用多行的 TextBox 控制項建立留言板

使用多行的 TextBox 控制項建立留言板 在瀏覽器檢視執行結果:

使用多行的 TextBox 控制項建立留言板

使用多行的 TextBox 控制項建立留言板

使用多行的 TextBox 控制項建立留言板 前面曾經提到必須代換純文字的換行與空白, 在程式碼中要表示空白字元很簡單, 但是換行是特殊的字元, 要如何表示呢? 為了解決這個問題, Visual Basic 已經預先設定好了 vbCrLf 這個常數代表換行字元, 所以在第 15 行使用 vbCrLf 就可以針對換行字元進行處理了。

使用多行的 TextBox 控制項建立留言板 Visual Basic 中還有許多其他常數代表其他特殊字元, 詳細請參考線上說明的『列印和顯示常數』段落。 一般留言板會在留言前面加上日期與時間, 所以程式第 18 行以 Now 屬性取得日期與時間, 然後使用 ToString 方法轉為字串。Now 是 .NET Framework 的 Microsoft.VisualBasic 命名空間下 DateAndTime 模組的成員, 可以用來取得伺服器目前的日期時間。

4 - 6 Postback 觀念與非按鈕控制項的事件觸發 前面我們已經使用『事件驅動程式設計』的觀念設計了多個網頁程式, 您可能會產生疑問:為何一定都是按下按鈕才會產生事件? 本節將介紹事件驅動背後的運作原理, 並且說明如何讓其他非按鈕的控制項也能觸發事件處理程序讓網頁動起來。

產生事件的原理-Postback 第 1 章已經介紹過動態網頁程式的基本原理, ASP.NET 程式是在遠端伺服器上面執行, 而用戶端只負責接收與送出資料:

產生事件的原理-Postback

產生事件的原理-Postback 使用者在網頁的操作及輸入的資料, 會在上面的步驟 3 送回給伺服器, ASP.NET 收到用戶端傳送過來的資料後, 會開始分析並產生事件, 例如按鈕 A 被按下, 便產生按鈕 A 的 Click 事件, 然後執行對應的事件處理程序:

產生事件的原理-Postback 由上面說明可以發現, 因為網頁是顯示於用戶端, 所以不論使用者做出任何動作操作, 如果沒有送回伺服器, 那些操作就永遠無法產生事件並且觸發相對應的程序。 而『送回伺服器』這個動作在 ASP.NET 中被稱為 Postback, 因此換句話說, 使用者的動作一定要 Postback 回伺服器, 才能順利觸發事件處理程序。

產生事件的原理-Postback 按鈕是傳統網頁送出資料的基本工具, 所以前面我們幾乎都是藉由按鈕的 Click 事件來執行程式。

TextBox 控制項的 TextChanged 事件 我們將藉由 TextBox 控制項的 TextChanged 事件, 說明非按鈕的控制項如何 Postback 回伺服器。 TextChanged 事件代表輸入欄位中的文字已經發生變化, 也就是使用者在 TextBox 控制項中新增或刪除文字, 便會產生 TextChanged 事件。

TextBox 控制項的 TextChanged 事件 請在 Web Form 中各建立 1 個 TextBox 與 Label 控制項, 並如下設定其屬性:

TextBox 控制項的 TextChanged 事件 接著請在設計模式下雙按 TextBox1, 建立 TextBox1_TextChanged 程序, 在其中輸入以下程式碼:

TextBox 控制項的 TextChanged 事件 在瀏覽器檢視執行

TextBox 控制項的 TextChanged 事件 要讓非按鈕控制項的事件可以 Postback 回伺服器其實相當簡單, 只要將控制項的 AutoPostBack 屬性設定為 “True”, 便表示此控制項的事件會自動 Postback, 再也不需要透過按鈕了。 所以請在 VWD 中將 TextBox1 的 AutoPostBack 屬性設定為 "True", 然後重新在瀏覽器檢視執行:

TextBox 控制項的 TextChanged 事件

4 - 7 預設按鈕與預設焦點 下面是一般在 ASP.NET 網頁程式中輸入資料的步驟:

預設按鈕與預設焦點 先用滑鼠點輸入欄位, 最後用滑鼠按下按鈕, 這是每個人都很熟悉的簡單動作。 不過在某些狀況下, 例如業務或會計人員要快速輸入大量資料, 這時候一下拿滑鼠, 一下用鍵盤, 操作上相當不便, 如果可以讓手一直保持在鍵盤上就好了。

預設按鈕與預設焦點 從上面輸入資料的步驟中, 您可以看到步驟 1 與 4 一定要使用滑鼠, 所以如果可以讓網頁載入時, 自動將游標放在第一個欄位中, 等全部資料輸入完畢後, 按下 鍵網頁就會自動使用預設按鈕送出資料, 這樣不用滑鼠即可輸入並送出資料。 要達成這個功能, 在 Web Form 的 DefaultButton 屬性內即可設定 鍵代表的按鈕, 而在 DefaultFocus 屬性內則能夠設定焦點預設放置的欄位。

預設按鈕與預設焦點 要建立如上圖的訂購單網頁, 並設定預設的按鈕與焦點。請如下在 Web Form 中建立 1 個 Label、2 個 TextBox 與 2 個 Button 控制項, 並如下設定其屬性:

預設按鈕與預設焦點 接著請在設計模式下雙按 Submit 與 Cancel 按鈕, 建立 Submit_Click 與 Cancel_Click 程序, 在其中輸入以下程式碼:

預設按鈕與預設焦點

預設按鈕與預設焦點 設計完訂購單程式後, 請如下設定此 Web Form 預設的按鈕與輸入游標一開始要放置的欄位:

預設按鈕與預設焦點 儲存檔案後, 在瀏覽器檢視執行結果:

預設按鈕與預設焦點

預設按鈕與預設焦點