十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶(hù) + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂(yōu)售后,網(wǎng)站問(wèn)題一站解決
記得VB6當(dāng)中有Shape控件,但是VB.net里這個(gè)控件不存在了。
創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的定安網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
提個(gè)思路:使用Picture控件或Label控件,通過(guò)代碼在控件里繪圖想要的圖形,可以試試。
關(guān)于用戶(hù)控件的使用,.net與v6環(huán)境下是有那么小小的區(qū)別。v6環(huán)境下的用戶(hù)控件編寫(xiě)后可以直接使用,而在.net環(huán)境下,則需要先生成控件庫(kù)(dll,應(yīng)用程序擴(kuò)展格式),然后再將這個(gè)控件庫(kù)導(dǎo)入到.net編程環(huán)境的工具箱上方可使用。其具體方法如下(以VS 2010,Visual Basic.net 為例):1、新建項(xiàng)目-Visual Basic-Windows-Windows 窗體控件庫(kù)-鍵入控件庫(kù)名稱(chēng)(默認(rèn)為Usercontrol1)確定;2、設(shè)計(jì)你的用戶(hù)控件,完成后按“F7”進(jìn)行編譯;3、在該解決方案目錄下找到控件庫(kù)擴(kuò)展(默認(rèn)為UserControl1.dll),確認(rèn)項(xiàng)目已經(jīng)生成。在上三項(xiàng)為控件庫(kù)DLL的生成方式,下面是調(diào)用方式:4、新建項(xiàng)目-Visual Basic-Windows-Windows 窗體應(yīng)用程序-確定;5、打開(kāi)工具箱,以任意一個(gè)控件上點(diǎn)擊右鍵-選擇項(xiàng)-.net framework組件-瀏覽-定位到生成的控件庫(kù)擴(kuò)展-確定;6、在工具箱中找到新添加的用戶(hù)控件,將其拖至窗體中進(jìn)行設(shè)計(jì)。經(jīng)測(cè),在.net環(huán)境下編譯的用戶(hù)控件是通用的。也就是說(shuō)使用Visual Basic.net編寫(xiě)的用戶(hù)控件,也可以在C#工程里使用,反之亦然。這充分體現(xiàn)了.net語(yǔ)言的交互性,在我看來(lái),.net下各種語(yǔ)言能力相當(dāng),它們都是作為一種中間語(yǔ)言,編譯出中間代碼。所以,在.net環(huán)境下,采用混合編程也未嘗不是一樣提高效率的一種可選的方式。
VB.net
Public?Class?父類(lèi)
End?Class
Public?Class?子類(lèi)
Inherits?父類(lèi)
End?Class
你這個(gè)要求實(shí)在是不對(duì)路子。是思路不對(duì)。
應(yīng)該是將窗體一和窗體二中的控件分別用一個(gè)panel裝起來(lái),設(shè)為隱含狀態(tài)。都放在主窗體的panel1中。
點(diǎn)擊 窗體一時(shí),第一個(gè)panel的Visible=True,第二個(gè)panel的Visible=False
點(diǎn)擊 窗體二時(shí),第一個(gè)panel的Visible=False,第二個(gè)panel的Visible=True
就達(dá)到你要的效果了。
窗體不能裝來(lái)裝去的。
再有一個(gè)方法就是創(chuàng)建自定義控件。那個(gè)說(shuō)起來(lái)太麻煩,看看書(shū)吧。
Public Class UserControl1
#Region "變量"
Dim Down_Color As Color = Color.Blue
Dim UP_Color As Color = Color.Gray
Dim Mode As Short = 0
Dim flag As Boolean
Dim offset_X As Integer
Dim offset_Y As Integer
Dim Mouse_P As Point
#End Region
#Region "屬性"
'按下顏色
Public Property _DownColor As Color
Get
Return Down_Color
End Get
Set(ByVal value As Color)
Down_Color = value
End Set
End Property
'彈起顏色
Public Property _UpColor As Color
Get
Return UP_Color
End Get
Set(ByVal value As Color)
UP_Color = value
End Set
End Property
'滑動(dòng)模式 0-橫 1-豎
Public Property _Mode As Short
Get
Return Mode
End Get
Set(ByVal value As Short)
Mode = value
End Set
End Property
#End Region
Private Sub UserControl1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.BackColor = UP_Color
End Sub
'鼠標(biāo)按下
Private Sub UserControl1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
Me.BackColor = Down_Color
Mouse_P = e.Location
flag = True
End Sub
'鼠標(biāo)移動(dòng)
Private Sub UserControl1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
If flag = False Then Exit Sub
Select Case Mode
Case 0 '橫向·
offset_X = e.X - Mouse_P.X
If Me.Location.X + offset_X + Me.Width = Me.ParentForm.Width Or Me.Location.X + offset_X = 0 Then
flag = False
Else
Me.Location = New Point(Me.Location.X + offset_X, Me.Location.Y)
End If
Case 1 '豎向·
offset_Y = e.Y - Mouse_P.Y
If Me.Location.Y + offset_Y + Me.Height + 30 = Me.ParentForm.Height Or Me.Location.Y + offset_Y = 0 Then
flag = False
Else
Me.Location = New Point(Me.Location.X, Me.Location.Y + offset_Y)
End If
End Select
End Sub
'鼠標(biāo)彈起
Private Sub UserControl1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
Me.BackColor = UP_Color
flag = False
End Sub
End Class
在繼承類(lèi)中添加了空的事件過(guò)程,估計(jì)也會(huì)調(diào)用基類(lèi)事件過(guò)程的,也就是兩個(gè)事件過(guò)程都會(huì)被調(diào)用??梢栽囋囋诶^承類(lèi)構(gòu)造函數(shù)中用 RemoveHandler 語(yǔ)句能不能撤銷(xiāo)基類(lèi)的事件過(guò)程的綁定。
另外一般的過(guò)程可以用override關(guān)鍵字隱藏基類(lèi)的同名方法,比如基類(lèi)調(diào)用的方法被繼承類(lèi)override重寫(xiě)后,就會(huì)調(diào)用繼承類(lèi)的方法了。所以可以把事件處理代碼放在一普通過(guò)程中,由事件過(guò)程調(diào)用,這樣繼承類(lèi)可以用空的同名方法覆蓋基類(lèi)方法了。