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... --------------------编程问答--------------------
这么会估计的啊。 --------------------编程问答--------------------
+2 --------------------编程问答--------------------
呵呵。自己按照自己的想法,也许估计错误,但如果能够给人一点点提示的话,那也挺高兴的。
补充:.NET技术 , VB.NET