vb.net - 通过第二种形式 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
我怎样才能以最好的方式做到这一点?
解决方案
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)
一切都会按应有的方式进行。
推荐阅读
- python - Python:如何在多个函数中编辑(全局)变量?
- jquery - jQuery简单的下拉菜单
- javascript - Vue 可重用的模态包装器
- excel - 如何在 vb 中的每个非空单元格之后在 excel 中添加预定义的行
- javascript - 如何使用javascript将字符串转换为对象并在snake_case中返回一些键?
- javascript - 无法从 chrome 扩展中的后台脚本向内容脚本发送消息
- python - 将numpy数组转换为数据框
- python - Python 异步 grpc 客户端流句柄
- javascript - 如何禁用其他选项并在多个下拉列表中附加值与角度js中的相同值?
- python - 如何处理GitHub中的SQL数据库