NET框架組件太大了 比任何以前所寫的封裝功能的庫都要大 這樣有好處 因為它大幅削減了建立應用程序所需編寫的代碼 但是也使我們不可能完全了解該框架組件 但是我們很容易從中找到一些技巧
網站建設哪家好,找創新互聯公司!專注于網頁設計、網站建設、微信開發、成都小程序開發、集團企業網站建設等服務項目。為回饋新老客戶創新互聯還提供了嘉蔭免費建站歡迎大家使用!
窗體嵌套
經驗豐富的Visual Basic開發者知道多文檔界面(MDI)應用程序能夠包含子窗體 那些子窗體由MDI父窗體管理 但是如果沒有MDI的能力你怎樣實現包含嵌套窗體?例如一個MDI子窗體也可能需要包含另一個窗體
有時能夠使用用戶控件(UserControl)實現這種功能 但是如果你真的需要把一個窗體嵌套進另一個窗體 有多種方法可以實現 窗體衍生自Control類 這意味著它能被放入另一個窗體的控件集合中 使用如下的邏輯
Dim f As New frmEmbed ()Me Controls Add(f)f Show()
但是很不幸 這段代碼將會導致一個運行時(runtime)異常(見圖 )
圖 試圖把一個窗體添加到另一個窗體的控件集合時出現的運行時錯誤
為了避免這種異常 該窗體的TopLevel屬性必須設置為False(見下面的代碼)
Dim f As New frmEmbed () f TopLevel = False Me Controls Add(f) f Show()
圖 顯示的是使用上面的邏輯實現的一個窗體嵌入另一個窗體 嵌入的窗體有一個標題條(它的顏色是未激活的系統顏色) 因此該嵌入窗體能在容器窗體內四處拖動 在圖 中 該窗體從它的開始位置(左上角)拖到了右下角
圖 在容器窗體中有一個嵌入的窗體 嵌入的窗體能在容器窗體中拖動
通常在顯示嵌入的窗體前先設置它的位置 這只需要簡單的設置嵌入窗體的Left和Top屬性 嵌入窗體的位置與容器窗體是相對的
與MDI子窗體不同 嵌入窗體能覆蓋容器窗體上的控件 圖 顯示了它們的不同
圖 嵌入窗體(左)可以覆蓋容器窗體上的控件 MDI子窗體(右)不能覆蓋MDI父窗體上的控件
在右邊的MDI例子中 沒有辦法使按鈕隱藏在子窗體的后面 但是在左邊該按鈕被嵌入窗體覆蓋了
當窗體第一次被嵌入時 它將顯示在容器窗體上的已存在的控件的后面 當它被點擊時 它走向前臺并停留在那兒 這會打擾用戶 但是能通過插入下面的代碼防止這種情況發生
f BringToFront()
嵌入的窗體可以包含其它的嵌入窗體 沒有實際的限制 圖 顯示了一個本身包含嵌入的窗體的嵌入窗體
lishixinzhi/Article/program/net/201311/12398
關于用戶控件的使用,點虐 與v6環境下是有那么小小的區別。v6環境下的用戶控件編寫后可以直接使用,而在點虐 環境下,則需要先生成控件庫(dll,應用程序擴展格式),然后再將這個控件庫導入到點虐 編程環境的工具箱上方可使用。其具體方法如下(以VS 2010,Visual Basic點虐 為例):1、新建項目-Visual Basic-Windows-Windows 窗體控件庫-鍵入控件庫名稱(默認為Usercontrol1)確定;2、設計你的用戶控件,完成后按“F7”進行編譯;3、在該解決方案目錄下找到控件庫擴展(默認為UserControl1.dll),確認項目已經生成。在上三項為控件庫DLL的生成方式,下面是調用方式:4、新建項目-Visual Basic-Windows-Windows 窗體應用程序-確定;5、打開工具箱,以任意一個控件上點擊右鍵-選擇項-點虐 framework組件-瀏覽-定位到生成的控件庫擴展-確定;6、在工具箱中找到新添加的用戶控件,將其拖至窗體中進行設計。經測,在點虐 環境下編譯的用戶控件是通用的。也就是說使用Visual Basic點虐 編寫的用戶控件,也可以在C#工程里使用,反之亦然。這充分體現了點虐 語言的交互性,在我看來,點虐 下各種語言能力相當,它們都是作為一種中間語言,編譯出中間代碼。所以,在點虐 環境下,采用混合編程也未嘗不是一樣提高效率的一種可選的方式。
建一個自定義的Web控件MyContro的步驟:
1)引用
using System;
using System.IO;
using System.Drawing;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
2)保證MyContro是從WebControl繼承的。
public class MyControl:WebControl
3)重寫下面兩個函數,這是必須的
protected override void Render(HtmlTextWriter writer)
{
this.CreateChildControls();
base.Render (writer);
}
protected override void CreateChildControls()
{
// 清除現有的子控件及其 ViewState
this.Controls.Clear();
this.ClearChildViewState();
// 生成控件樹
// 生成環境表格(一行,兩個單元格)
Table myTable = new Table();
//build the table row生成表格中的行
TableRow row = new TableRow();
myTable.Rows.Add(row);
// 生成單元格
TableCell myCell = new TableCell();
//用來生成鏈接按鈕導航條的代碼。每個按鈕都顯示有一個 Webdings 字符,可以根據需//禁用,并被綁定到內部的 Click 事件處理程序。
LinkButton myLinkButton = new LinkButton();
myLinkButton.ID = "MyLinkButton";
myLinkButton.Click += new EventHandler(myLinkButton_Click);
myLinkButton.Font.Name = "宋體";
myLinkButton.ToolTip = "好玄啊!";
myLinkButton.Text = "請點我";
myCell.Controls.Add(myLinkButton);
row.Cells.Add(myCell);
Controls.Add(t);
}
4)自定義的事件的方法
private void myLinkButton_Click(object sender,System.EventArgs e)
{
Page.Response.Write("想干點什么就寫點什么吧,就這么簡單!");
}
5)編譯一下,然后點工具—》添加/移除工具箱項
瀏覽到你編譯生成的dll
6)使用
控件不一定有界面,類也不一定有界面。
以Visual Studio 2012為例
把你的控件封裝到類里面,生成exe或dll,在要調用的項目中,進入工具箱,右鍵任意項,選擇項,在.Net Framework組件中瀏覽到生成的exe或dll,在上面列表中相應的內容,勾選,確定
當前文章:vb點虐
用戶控件 vbnet用戶控件
當前地址:http://www.yijiale78.com/article34/ddjghpe.html
成都網站建設公司_創新互聯,為您提供品牌網站制作、移動網站建設、商城網站、外貿建站、面包屑導航、品牌網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯