当前位置:编程学习 > C#/ASP.NET >>

VB.NET中定义类

各位高手们!

小弟目前使用VB.NET编写一个系统,目前已经自定义了两个类。具体如下
1.类Projects

Public Class Projects
    Private _Count As Integer
    Private _Item As Project

    Public Property Count As Integer
        Get
            Return _Count
        End Get
        Set(ByVal value As Integer)
            _Count = value
        End Set
    End Property

    Public Property Items(ByVal index As Object) As Project
        Get
            Return _Item
        End Get
        Set(ByVal value As Project)
            _Item = value
        End Set
    End Property

End Class


2.类Project

Public Class Project
    Private _Name As String
    Private _OriginalValue As String
    Private _NewValue As String

    Public Property OriginalValue As String
        Get
            Return _OriginalValue
        End Get
        Set(ByVal value As String)
            If value = Nothing Or value.Length <= 0 Then
                _OriginalValue = ""
            Else
                _OriginalValue = value
            End If
        End Set
    End Property

    Public Property NewValue As String
        Get
            Return _NewValue
        End Get
        Set(ByVal value As String)
            If value = Nothing Or value.Length <= 0 Then
                _NewValue = ""
            Else
                _NewValue = value
            End If
        End Set
    End Property

    Public Property Name As String
        Get
            Return _Name
        End Get
        Set(ByVal value As String)
            If value = Nothing Or value.Length <= 0 Then
                _Name = ""
            Else
                _Name = value
            End If
        End Set
    End Property

End Class

其中Projects中的Item为类Project,count统计Project的个数。
目前遇到的一些问题的是,在一个窗体中有一个TextBox控件,当我在值改变时,出现的多个类的newvalue(以下的代码是写在窗体上的)
Private Sub TxtDocument_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TxtDocument.TextChanged
        With Myorm.Projects
            .Items(.ActiveItem).NewValue = TxtDocument.Text
        End With
    End Sub
此处遇到的问题是:当我实例化了两个Items(即Project),txtdoucment的值发生时,而两个类的内容同时改变,而我希望达到的内容是当前窗体对应的那个类的值发生改变。 --------------------编程问答-------------------- 补充:我在实例化两个items的时候,同时实例化两个窗体,并且items对应这两个窗体,窗体中有个textbox,当我对第二个实例化的改变textbox中的text时,Myorm.Projects.Items(1).NewValue = TxtDocument.Text进行赋值,但我在运行的过程中发生,赋值的同时,Myorm.Projects.Items(0).NewValue 的值也等于窗体 project的txtdocument.text中的值了,而我实例化第一个窗体中的文本框的值并没有发生变化

  --------------------编程问答-------------------- 试试 Private _Item As New Project --------------------编程问答--------------------  建议贴上全部代码

我看你的估计你想要做的是
 
你的类 project 是个工程对象,
然后你的类 projects 是个管理 project 对象是不是?
如果是的话,你思路是不正确的 因为你的管理类 projects 只能管理一个project ,所以你一个赋值了,应该一个旧改变了。

z在vb。net 添加一个新类,然后复制下面的代码
Public Class Projects

    Private mitems As New List(Of Project)

    ReadOnly Property Count() As Integer
        Get
            Return items.Count
        End Get
    End Property

    ReadOnly Property Items() As List(Of Project)
        Get
            Return mitems
        End Get
    End Property
End Class



Public Class Project
    Private _Name As String = ""
    Private _OriginalValue As String
    Private _NewValue As String

    Public Property OriginalValue() As String
        Get
            Return _OriginalValue
        End Get
        Set(ByVal value As String)
            If value = Nothing Or value.Length <= 0 Then
                _OriginalValue = ""
            Else
                _OriginalValue = value
            End If
        End Set
    End Property

    Public Property NewValue() As String
        Get
            Return _NewValue
        End Get
        Set(ByVal value As String)
            If value = Nothing Or value.Length <= 0 Then
                _NewValue = ""
            Else
                _NewValue = value
            End If
        End Set
    End Property

    Public Property Name() As String
        Get
            Return _Name
        End Get
        Set(ByVal value As String)
            If value = Nothing Or value.Length <= 0 Then
                _Name = ""
            Else
                _Name = value
            End If
        End Set
    End Property
    Overrides Function tostring() As String
        Return _Name
    End Function
End Class

然后在窗体添加一个列表框 一个按钮三个文本框,复制下面代码
 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim item1 As New Project
        Dim item2 As New Project
        Dim projects As New Projects

        item1.Name = "工程1"

        item2.Name = "工程2"
        projects.Items.Add(item1)
        projects.Items.Add(item2)

        ListBox1.Items.AddRange(projects.Items.ToArray)


    End Sub

    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
        Dim item As Project
        If ListBox1.SelectedIndex <> -1 Then
            item = CType(ListBox1.SelectedItem, Project)
            TextBox1.Text = item.Name
            TextBox2.Text = item.NewValue
            TextBox3.Text = item.OriginalValue
        End If
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        If ListBox1.SelectedIndex = -1 Then
            MsgBox("请选择要修改 Proect")
            Return
        End If
        Dim item As Project = CType(ListBox1.SelectedItem, Project)
        item.Name = TextBox1.Text
        item.NewValue = TextBox2.Text
        item.OriginalValue = TextBox3.Text
    End Sub


效果图
--------------------编程问答-------------------- luoguo... --------------------编程问答--------------------
引用 3 楼 lmhcs 的回复:
 建议贴上全部代码

我看你的估计你想要做的是
 
你的类 project 是个工程对象,
然后你的类 projects 是个管理 project 对象是不是?
如果是的话,你思路是不正确的 因为你的管理类 projects 只能管理一个project ,所以你一个赋值了,应该一个旧改变了。

z在vb。net 添加一个新类,然后复制下面的代码VB.NET code
Publi……


这么会估计的啊。 --------------------编程问答--------------------
引用 3 楼 lmhcs 的回复:
建议贴上全部代码

我看你的估计你想要做的是
 
你的类 project 是个工程对象,
然后你的类 projects 是个管理 project 对象是不是?
如果是的话,你思路是不正确的 因为你的管理类 projects 只能管理一个project ,所以你一个赋值了,应该一个旧改变了。

z在vb。net 添加一个新类,然后复制下面的代码

VB.NET code
Pub……


+2 --------------------编程问答--------------------
引用 5 楼 linjimu 的回复:
引用 3 楼 lmhcs 的回复:

建议贴上全部代码

我看你的估计你想要做的是

你的类 project 是个工程对象,
然后你的类 projects 是个管理 project 对象是不是?
如果是的话,你思路是不正确的 因为你的管理类 projects 只能管理一个project ,所以你一个赋值了,应该一个旧改变了。

z在vb。net 添加一个新类,然后复制下面的代码……


呵呵。自己按照自己的想法,也许估计错误,但如果能够给人一点点提示的话,那也挺高兴的。
补充:.NET技术 ,  VB.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,