VB.NET редактирование существующих, что с формой - PullRequest
1 голос
/ 28 апреля 2010

У меня есть простые вопросы, которые меня озадачивают. Мне нужно немного освежиться с 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

1 Ответ

1 голос
/ 28 апреля 2010

Вы на самом деле не добавили вопрос, но, глядя на код, это немного странно.
Если вы нажмете «Добавить», он покажет frmAddCont, а затем в кнопке подтверждения этой формы сохранит данные, но если вы нажмете «Изменить», он не отобразит форму и снова добавит те же данные. Я думаю, вам не хватает frmAddCont.Show() в обработчике кнопок редактирования.

Однако в целом вы слишком много смешиваете данные с графическим интерфейсом. Класс Contact не должен ничего знать о frmAddCont, скорее, кнопки «Добавить» и «Редактировать» в главной форме должны отображать frmAddCont как требуется (но я бы сделал ShowDialog вместо Show, чтобы сделать его модальным), и если в режиме редактирования я отправляю Contact для редактирования на frmAddCont, а затем, когда пользователь нажимает подтвердить, я изменяю / создаю Contact по мере необходимости, и если это будет Добавить, у меня будет метод, который главная форма может позвонить, чтобы получить новый Contact.
Я думаю, что для GUI хорошо знать о вашем Contact классе, но класс Contact теперь должен знать что-либо о формах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...