关于类的继承测试程序

本程序运行需要在窗体上添加一个TreeView、一个Panel、一个PropertyGrid控件。

在TreeView、Panel控件上使用右键可为其添加子控件。

程序主要为了测试类的特性,同时也有运行时动态改变控件位置的实现方法,对于不同控件属性保持一致动态添加的控件添加事件等功能实现兼而有之,值得初学者一看。

 

主要源码:

(1) BaseClass Code:

Public   Class BaseClass

    
Private mName As String = "默认"
    
Private mStatus As DevStatus = DevStatus.Default
    
Private mId As Guid = Guid.NewGuid

    
Public Event NameChanged(ByVal NewName As String)
    
Public Event StatusChanged(ByVal NewStatus As DevStatus)

    
Public Enum DevStatus
        [
Default= 0
        Normal 
= 1
        Warn 
= 2
        [
Error= 3
        Unknown 
= 4
    
End Enum


    
Property Name() As String
        
Get
            
Return Me.mName
        
End Get
        
Set(ByVal value As String)
            
If Not value.Equals(Me.mName) Then
                
Me.mName = value
                
RaiseEvent NameChanged(value)
            
End If
        
End Set
    
End Property


    
Property Status() As DevStatus
        
Get
            
Return Me.mStatus
        
End Get
        
Set(ByVal value As DevStatus)
            
If Not value.Equals(Me.Status) Then
                
Me.mStatus = value
                
RaiseEvent StatusChanged(value)
            
End If
        
End Set
    
End Property


    
Property ID() As Guid
        
Get
            
Return Me.mId
        
End Get
        
Set(ByVal value As Guid)
            
Me.mId = value
        
End Set
    
End Property

End Class

(2) Otd Code:

Public   Class Otd
    
Inherits BaseClass

    
Private mPower As Integer

    
Property Power() As Integer
        
Get
            
Return Me.mPower
        
End Get
        
Set(ByVal value As Integer)
            
Me.mPower = value
        
End Set
    
End Property


    
Sub New()
        
MyBase.New()
        
Me.Name = "光发送机"
    
End Sub

End Class

(3) Upor Code :

Public   Class Upor
    
Inherits BaseClass

    
Private mCurrent As Integer

    
Property Current() As Integer
        
Get
            
Return Me.mCurrent
        
End Get
        
Set(ByVal value As Integer)
            
Me.mCurrent = value
        
End Set
    
End Property


    
Sub New()
        
MyBase.new()
        
Me.Name = "光接收机"
    
End Sub


End Class

(4) MyPic Code :

Public   Class MyPic
    
Inherits PictureBox

    
Private MouseDownPoint As Point
    
Private mMeSelect As Boolean

    
Public WithEvents Device As BaseClass
    
Public Event PicClick(ByVal Device As BaseClass)

    
Public Property MeSelect() As Boolean
        
Get
            
Return Me.mMeSelect
        
End Get
        
Set(ByVal value As Boolean)
            
Me.mMeSelect = value
            
If value Then
                
Me.BorderStyle = Windows.Forms.BorderStyle.Fixed3D
            
Else
                
Me.BorderStyle = Windows.Forms.BorderStyle.FixedSingle
            
End If
        
End Set
    
End Property


    
Sub New(ByVal ThisDevice As BaseClass)
        
MyBase.New()
        
Me.BorderStyle = Windows.Forms.BorderStyle.FixedSingle
        
Me.Device = ThisDevice
    
End Sub


    
Private Sub mDevice_StatusChanged(ByVal NewStatus As BaseClass.DevStatus) Handles Device.StatusChanged
        
Select Case NewStatus
            
Case BaseClass.DevStatus.Default : Me.BackColor = Color.Transparent
            
Case BaseClass.DevStatus.Error : Me.BackColor = Color.Red
            
Case BaseClass.DevStatus.Normal : Me.BackColor = Color.LightGreen
            
Case BaseClass.DevStatus.Unknown : Me.BackColor = Color.Blue
            
Case BaseClass.DevStatus.Warn : Me.BackColor = Color.Yellow
        
End Select
    
End Sub


    
Private Sub MyPic_Click(ByVal sender As ObjectByVal e As System.EventArgs) Handles Me.Click
        
RaiseEvent PicClick(Me.Device)
    
End Sub


    
Private Sub MyPic_MouseDown(ByVal sender As ObjectByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
        
If e.Button = Windows.Forms.MouseButtons.Left Then
            
Me.Cursor = Cursors.Hand
            MouseDownPoint 
= New Point(e.X, e.Y)
        
End If
    
End Sub


    
Private Sub MyPic_MouseMove(ByVal sender As ObjectByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
        
If e.Button = Windows.Forms.MouseButtons.Left Then
            
Dim dx As Integer = e.X - MouseDownPoint.X
            
Dim dy As Integer = e.Y - MouseDownPoint.Y

            
Me.Location = New Point(Me.Left + dx, Me.Top + dy)
        
End If
    
End Sub


    
Private Sub MyPic_MouseUp(ByVal sender As ObjectByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
        
Me.Cursor = Cursors.Arrow
    
End Sub

End Class

(5) MyNode Code :

Public   Class MyNode
    
Inherits TreeNode

    
Public WithEvents Device As BaseClass

    
Sub New(ByVal ThisDevice As BaseClass)
        
MyBase.New()
        
Me.Device = ThisDevice
        
Me.Text = Me.Device.Name
    
End Sub


    
Private Sub mDevice_NameChanged(ByVal NewName As StringHandles Device.NameChanged
        
Me.Text = NewName
    
End Sub


    
Private Sub mDevice_StatusChanged(ByVal NewStatus As BaseClass.DevStatus) Handles Device.StatusChanged
        
Select Case NewStatus
            
Case BaseClass.DevStatus.Default : Me.ForeColor = Color.Black
            
Case BaseClass.DevStatus.Error : Me.ForeColor = Color.Red
            
Case BaseClass.DevStatus.Normal : Me.ForeColor = Color.LightGreen
            
Case BaseClass.DevStatus.Unknown : Me.ForeColor = Color.Blue
            
Case BaseClass.DevStatus.Warn : Me.ForeColor = Color.Yellow
        
End Select
    
End Sub

End Class

(6) Form Code :

Public   Class Form1

    
Private Sub NewOtdToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewOtdToolStripMenuItem1.Click
        AddPicCtrl(
New Otd).Device = AddNodeCtrl(New Otd).Device
    
End Sub


    
Private Sub NewUporToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewUporToolStripMenuItem1.Click
        AddPicCtrl(
New Upor).Device = AddNodeCtrl(New Upor).Device
    
End Sub


    
Private Sub NewOtdToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewOtdToolStripMenuItem.Click
        AddNodeCtrl(
New Otd).Device = AddPicCtrl(New Otd).Device
    
End Sub


    
Private Sub NewUporToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewUporToolStripMenuItem.Click
        AddPicCtrl(
New Upor).Device = AddNodeCtrl(New Upor).Device
    
End Sub


    
Private Function AddNodeCtrl(ByVal Cls As BaseClass) As MyNode
        
Dim NodeCtrl As New MyNode(Cls)
        TreeView1.Nodes.Add(NodeCtrl)
        
Return NodeCtrl
    
End Function


    
Private Function AddPicCtrl(ByVal Cls As BaseClass) As MyPic
        
Dim PicCtrl As New MyPic(Cls)
        
AddHandler PicCtrl.PicClick, AddressOf Me.PicClick
        Panel1.Controls.Add(PicCtrl)
        
Return PicCtrl
    
End Function


    
Private Sub PicClick(ByVal Device As BaseClass)
        
Me.PropertyGrid1.SelectedObject = Device

        
For Each Pic As MyPic In Panel1.Controls
            Pic.MeSelect 
= Pic.Device.ID.Equals(Device.ID)
        
Next
        
For Each node As MyNode In TreeView1.Nodes
            
If node.Device.ID.Equals(Device.ID) Then
                TreeView1.SelectedNode 
= node
                
Exit For
            
End If
        
Next
    
End Sub


    
Private Sub TreeView1_NodeMouseClick(ByVal sender As ObjectByVal e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseClick
        
Me.PropertyGrid1.SelectedObject = CType(e.Node, MyNode).Device
        
For Each Pic As MyPic In Panel1.Controls
            Pic.MeSelect 
= Pic.Device.ID.Equals(CType(e.Node, MyNode).Device.ID)
        
Next
    
End Sub

End Class

你可能感兴趣的:(关于类的继承测试程序)