редактировать объект второй формой vb.net - PullRequest
0 голосов
/ 28 мая 2020

Мне нужно отредактировать значения основного объекта с помощью формы edit_settings.

Теперь я передаю объект для редактирования By Ref второй форме и редактирую его напрямую. Когда я применяю изменения и закрываю edit_settings форму, ничего не происходит, и объект остается без изменений.

Вот мой код:

основная форма

 Private Sub BtnEditStream1_Click(sender As Object, e As EventArgs) Handles BtnEditStream1.Click
    Dim settingsStream = New StreamForm(myEncoder.streams(0), Me)
    settingsStream.Show()
 End Sub

форма edit_settings

Public Sub New(ByRef stream As Encoder.Stream, ByRef settingsForm As SettingsForm)
    InitializeComponent()
    myStream = stream
    mySettingsForm = settingsForm
End Sub

...
doing stuff
...

Private Sub BtnApply_Click(sender As Object, e As EventArgs) Handles BtnApply.Click
    myStream.codec = CbCodec.SelectedItem
    myStream.bitrate = CbBitrate.SelectedItem
    myStream.url = TbURL.Text
    myStream.password = TbPassword.Text
    myStream.port = TbPort.Text
    myStream.mount = TbMountpoint.Text
    myStream.name = TbName.Text
    myStream.title = TbTitle.Text
    myStream.genre = TbGenre.Text
    myStream.description = TbDescription.Text
    myStream.isPublic = CbPublic.Checked
    mySettingsForm.UpdateMenu()

    Me.Close()
End Sub

Как мне сделать это наилучшим образом?

1 Ответ

1 голос
/ 28 мая 2020

Вместо структуры, объявленной в классе Encoder, этот тип Stream должен быть классом, объявленным независимо. Сделайте это, а затем избавьтесь от обоих ключевых слов ByRef здесь:

Public Sub New(ByRef stream As Encoder.Stream, ByRef settingsForm As SettingsForm)

ie

Public Sub New(stream As Stream, settingsForm As SettingsForm)

, и все будет работать так, как должно.

...