扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
记得VB6当中有Shape控件,但是VB.net里这个控件不存在了。
创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的定安网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
提个思路:使用Picture控件或Label控件,通过代码在控件里绘图想要的图形,可以试试。
关于用户控件的使用,.net与v6环境下是有那么小小的区别。v6环境下的用户控件编写后可以直接使用,而在.net环境下,则需要先生成控件库(dll,应用程序扩展格式),然后再将这个控件库导入到.net编程环境的工具箱上方可使用。其具体方法如下(以VS 2010,Visual Basic.net 为例):1、新建项目-Visual Basic-Windows-Windows 窗体控件库-键入控件库名称(默认为Usercontrol1)确定;2、设计你的用户控件,完成后按“F7”进行编译;3、在该解决方案目录下找到控件库扩展(默认为UserControl1.dll),确认项目已经生成。在上三项为控件库DLL的生成方式,下面是调用方式:4、新建项目-Visual Basic-Windows-Windows 窗体应用程序-确定;5、打开工具箱,以任意一个控件上点击右键-选择项-.net framework组件-浏览-定位到生成的控件库扩展-确定;6、在工具箱中找到新添加的用户控件,将其拖至窗体中进行设计。经测,在.net环境下编译的用户控件是通用的。也就是说使用Visual Basic.net编写的用户控件,也可以在C#工程里使用,反之亦然。这充分体现了.net语言的交互性,在我看来,.net下各种语言能力相当,它们都是作为一种中间语言,编译出中间代码。所以,在.net环境下,采用混合编程也未尝不是一样提高效率的一种可选的方式。
VB.net
Public Class 父类
End Class
Public Class 子类
Inherits 父类
End Class
你这个要求实在是不对路子。是思路不对。
应该是将窗体一和窗体二中的控件分别用一个panel装起来,设为隐含状态。都放在主窗体的panel1中。
点击 窗体一时,第一个panel的Visible=True,第二个panel的Visible=False
点击 窗体二时,第一个panel的Visible=False,第二个panel的Visible=True
就达到你要的效果了。
窗体不能装来装去的。
再有一个方法就是创建自定义控件。那个说起来太麻烦,看看书吧。
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
'滑动模式 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
'鼠标按下
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
'鼠标移动
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
'鼠标弹起
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
在继承类中添加了空的事件过程,估计也会调用基类事件过程的,也就是两个事件过程都会被调用。可以试试在继承类构造函数中用 RemoveHandler 语句能不能撤销基类的事件过程的绑定。
另外一般的过程可以用override关键字隐藏基类的同名方法,比如基类调用的方法被继承类override重写后,就会调用继承类的方法了。所以可以把事件处理代码放在一普通过程中,由事件过程调用,这样继承类可以用空的同名方法覆盖基类方法了。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流