1

私を困惑させる簡単な質問があります。しばらく離れていたので、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
4

1 に答える 1

1

実際には質問を追加していませんが、コードを見ると少し奇妙です。
[追加] をクリックすると frmAddCont が表示され、そのフォームの確認ボタンにデータが保存されますが、[編集] をクリックするとフォームは表示されず、同じデータのみが再度追加されます。frmAddCont.Show()編集ボタン ハンドラにa がないと思います。

ただし、全体として、データと GUI を混ぜすぎています。Contactクラスは について何も知らないはずです。frmAddContむしろ、メイン フォームの [追加] ボタンと [編集] ボタンは、必要に応じて frmAddCont を表示する必要があります (ただし、モーダルにするのではShowDialogなく、そうします)。に、ユーザーが確認を押したら、必要に応じて を修正/作成します。それが Add の場合は、メイン フォームが新しい を取得するために呼び出すことができるメソッドがあります。 GUI がクラスについて知っていても問題ないと思いますが、クラスはフォームについて何でも知っているはずです。ShowContactfrmAddContContactContact
ContactContact

于 2010-04-28T18:22:52.347 に答える