首页 > 解决方案 > 通过第二种形式 vb.net 编辑对象

问题描述

我需要通过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

编辑设置表单

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

我怎样才能以最好的方式做到这一点?

标签: vb.net

解决方案


EncoderStream类型不应是在类中声明的结构,而应是独立声明的类。这样做,然后在这里去掉这两个ByRef关键字:

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

IE

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

一切都会按应有的方式进行。


推荐阅读