建一個(gè)自定義的Web控件MyContro的步驟:

成都創(chuàng)新互聯(lián)公司主營寧河網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP開發(fā),寧河h5小程序開發(fā)搭建,寧河網(wǎng)站營銷推廣歡迎寧河等地區(qū)企業(yè)咨詢
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)重寫下面兩個(gè)函數(shù),這是必須的
protected override void Render(HtmlTextWriter writer)
{
this.CreateChildControls();
base.Render (writer);
}
protected override void CreateChildControls()
{
// 清除現(xiàn)有的子控件及其 ViewState
this.Controls.Clear();
this.ClearChildViewState();
// 生成控件樹
// 生成環(huán)境表格(一行,兩個(gè)單元格)
Table myTable = new Table();
//build the table row生成表格中的行
TableRow row = new TableRow();
myTable.Rows.Add(row);
// 生成單元格
TableCell myCell = new TableCell();
//用來生成鏈接按鈕導(dǎo)航條的代碼。每個(gè)按鈕都顯示有一個(gè) Webdings 字符,可以根據(jù)需//禁用,并被綁定到內(nèi)部的 Click 事件處理程序。
LinkButton myLinkButton = new LinkButton();
myLinkButton.ID = "MyLinkButton";
myLinkButton.Click += new EventHandler(myLinkButton_Click);
myLinkButton.Font.Name = "宋體";
myLinkButton.ToolTip = "好玄啊!";
myLinkButton.Text = "請點(diǎn)我";
myCell.Controls.Add(myLinkButton);
row.Cells.Add(myCell);
Controls.Add(t);
}
4)自定義的事件的方法
private void myLinkButton_Click(object sender,System.EventArgs e)
{
Page.Response.Write("想干點(diǎn)什么就寫點(diǎn)什么吧,就這么簡單!");
}
5)編譯一下,然后點(diǎn)工具—》添加/移除工具箱項(xiàng)
瀏覽到你編譯生成的dll
6)使用
控件(包括字體)隨窗體按比例縮放
Public?Class?frmDl'根據(jù)自己窗體名變更
Dim?x?As?Single?=?0
Dim?y?As?Single?=?0
Private?Sub?frmDl_Load(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?MyBase.Load
x?=?Me.Width
y?=?Me.Height
setTag(Me)
End?Sub
'遞歸取控件的原始大小和位置,用tag來紀(jì)錄
Private?Sub?setTag(ByVal?obj?As?Object)
For?Each?con?As?Control?In?obj.Controls
con.Tag?=?con.Width??":"??con.Height??":"??con.Left??":"??con.Top??":"??con.Font.Size
'如果是容器控件,則遞歸繼續(xù)紀(jì)錄
If?con.Controls.Count??0?Then
setTag(con)
End?If
Next
End?Sub
'遞歸重新設(shè)定控件的大小和位置
Private?Sub?setControls(ByVal?newx?As?Single,?ByVal?newy?As?Single,?ByVal?obj?As?Object)
For?Each?con?As?Control?In?obj.Controls
con.AutoSize?=?False
Dim?mytag()?As?String?=?con.Tag.ToString.Split(":")
con.Width?=?mytag(0)?*?newx
con.Height?=?mytag(1)?*?newy
con.Left?=?mytag(2)?*?newx
con.Top?=?mytag(3)?*?newy
'計(jì)算字體縮放比例,縮放字體
Dim?currentSize?As?Single?=?(mytag(1)?*?newy?*?mytag(4))?/?mytag(1)
con.Font?=?New?Font(con.Font.Name,?currentSize,?_
con.Font.Style,?con.Font.Unit)
'如果是容器控件,則遞歸繼續(xù)縮放
If?con.Controls.Count??0?Then
setControls(newx,?newy,?con)
End?If
Next
End?Sub
Private?Sub?frmDl_Resize(ByVal?sender?As?Object,?ByVal?e?As?System.EventArgs)?Handles?Me.Resize
'得到現(xiàn)在窗體的大小,然后根據(jù)原始大小計(jì)算縮放比例
Dim?newx?As?Single?=?Me.Width?/?x
Dim?newy?As?Single?=?Me.Height?/?y
setControls(newx,?newy,?Me)
End?Sub
End?Class
控件.location=New Point(X,Y)
X,Y為整數(shù),即控件坐標(biāo),原點(diǎn)在窗體左上角
以下代碼測試成功,圖片大小和位置改變后,標(biāo)簽控件依然在這個(gè)點(diǎn)上。
Dim?px,?py,?lx,?ly?As?Integer
Private?Sub?PictureBox1_Resize(ByVal?sender?As?Object,?ByVal?e?As?System.EventArgs)?Handles?PictureBox1.Resize
If?px??0?And?py??0?Then
Label1.Location?=?New?Point(PictureBox1.Size.Width?/?px?*?lx,?PictureBox1.Size.Height?/?py?*?ly)
End?If
End?Sub
Private?Sub?Form1_Load(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?MyBase.Load
px?=?PictureBox1.Size.Width
py?=?PictureBox1.Size.Height
lx?=?Label1.Location.X
ly?=?Label1.Location.Y
End?Sub
這是控件被鎖定,要移動控件在窗體中單擊右鍵點(diǎn)擊【鎖定控件】后就可以移動了。
兩種方法,一種是固定窗口大小,一種是控件在窗口大小改變時(shí),自動按窗口位置進(jìn)行改變;
以上為個(gè)人看法,手打很辛苦,希望采納,謝謝您的支持。
謝謝您的支持,有任何疑問歡迎您再次通過此渠道提問,讓大家共同解決,共同進(jìn)步!
以上回答僅為“百度規(guī)則”,沒有任何違法行為,請樓主采納,謝謝!
網(wǎng)站欄目:vbnet控件位置,vbnet常用控件介紹
網(wǎng)頁URL:http://chinadenli.net/article1/dsihdid.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、Google、企業(yè)建站、移動網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)