我有一个让我困惑的简单问题。因为我已经离开了一段时间,所以我需要对VB进行一些改进。我有一个添加新联系人的表单。通过按下适当的按钮添加新联系人,它们在表单列表中显示为条目。我现在尝试添加一个编辑按钮,用于编辑现有条目。用户将在列表中选择一个给定的条目,然后按编辑按钮,将显示一个适当的表单(AddContFrm)。现在它只是添加了另一个具有相同标题的条目。逻辑在一个名为Contact.vb的类中处理。这是我的代码。
Public Class Contact
Public Contact As String
Public Title As String
Public Fname As String
Public Surname As String
Public Address As String
Private myCont As String
Public Property Cont()
Get
Return myCont
End Get
Set(ByVal value)
myCont = Value
End Set
End Property
Public Overrides Function ToString() As String
Return Me.Cont
End Function
Sub NewContact()
FName = frmAddCont.txtFName.ToString
frmStart.lstContact.Items.Add(FName)
frmAddCont.Hide()
End Sub
Public Sub Display()
Dim C As New Contact
'C.Cont = InputBox("Enter a title for this contact.")
C.Cont = frmAddCont.txtTitle.Text
C.Fname = frmAddCont.txtFName.Text
C.Surname = frmAddCont.txtSName.Text
C.Address = frmAddCont.txtAddress.Text
'frmStart.lstContact.Items.Add(C.Cont.ToString)
frmStart.lstContact.Items.Add(C)
End Sub
End Class
AddContFrm
Public Class frmAddCont
Public Class ControlObject
Dim Title As String
Dim FName As String
Dim SName As String
Dim Address As String
Dim TelephoneNumber As Integer
Dim emailAddress As String
Dim Website As String
Dim Photograph As String
End Class
Private Sub btnConfirmAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConfirmAdd.Click
Dim C As New Contact
C.Display()
Me.Hide()
End Sub
Private Sub frmAddCont_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
End Class
和frmStart.vb
Public Class frmStart
Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
frmAddCont.Show()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDel.Click
Dim DelCont As Contact
DelCont = Me.lstContact.SelectedItem()
lstContact.Items.Remove(DelCont)
End Sub
Private Sub lstContact_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstContact.SelectedIndexChanged
End Sub
Private Sub btnEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEdit.Click
Dim C As Contact
If lstContact.SelectedItem IsNot Nothing Then
C = DirectCast(lstContact.SelectedItem, Contact)
C.Display()
End If
End Sub
End Class
答案 0 :(得分:1)
你还没有真正添加一个问题但是查看你的代码有点奇怪
如果单击“添加”,将显示frmAddCont,然后在该表单的“确认”按钮中保存数据,但如果单击“编辑”,则不会显示该表单,只会再次添加相同的数据。我认为您在编辑按钮处理程序中缺少frmAddCont.Show()
。
然而,总而言之,您将数据与GUI混合得太多了。 Contact
类应该对frmAddCont
一无所知,相反,主窗体中的“添加”和“编辑”按钮应根据需要显示frmAddCont(但我会ShowDialog
而不是Show
如果它处于编辑模式,我会将要编辑的Contact
发送到frmAddCont
然后当用户按下确认时我会修改/创建Contact
根据需要,如果它是一个添加我有一个方法主表单可以调用以获取新的Contact
。
我认为GUI可以了解您的Contact
类,但Contact
类现在应该知道有关表单的任何内容。