【问题标题】:Preserve Previous Data After Creating A New Instance Of An Object创建对象的新实例后保留以前的数据
【发布时间】:2013-03-27 19:25:05
【问题描述】:

说我有这个:

Dim Editor As frmEditor
Editor.Text = "New Form"
Editor.Controls.Add(richTextBox)

然后在子例程中,我这样做:

Editor = New frmEditor

是否可以保存之前声明的Editor 的控件/数据以供将来使用?声明的那个不是使用New 关键字实例化的那个。

【问题讨论】:

  • 为什么不,只是不使用相同的变量?
  • 它不起作用。如果我没错的话。 Editor = New frmEditor 创建一个与前一个不同的新对象,删除所有控件和数据?如果我对此有误,请纠正我。
  • 您好,您可以先执行Dim oldEditor as frmEditor 之类的操作,然后再执行Editor = New frmEditor 执行oldEditor = Editor 吗? oldEditor 应该有对前一个对象的引用
  • 感谢@nkvu,成功了。 :)
  • 没问题 - 我也将评论移至答案部分,以防其他人有类似问题

标签: .net vb.net variable-declaration objectinstantiation


【解决方案1】:

[nkvu - 从 cmets 转移到回答以防万一有人有类似的查询....]

你能不能这样做:

Dim oldEditor as frmEditor 

那么在你做之前:

Editor = New frmEditor 

这样做:

oldEditor = Editor

oldEditor 应该有对前一个对象的引用

【讨论】:

    【解决方案2】:
    Dim Editor As frmEditor
    

    ... 不创建编辑器,它只声明一个空变量,因此 ...

    Dim Editor As frmEditor
    Editor.Text = "New Form"
    

    ...会失败!

    必须使用New 创建一个表单:

    Dim Editor As frmEditor
    Editor = New frmEditor()
    Editor.Text = "New Form"
    

    或者

    Dim Editor As frmEditor = New frmEditor()
    Editor.Text = "New Form"
    

    回答你的问题:

    将“旧”编辑器分配给另一个变量

    Dim oldEditor As Editor = frmEditor
    frmEditor = New frmEditor()
    frmEditor.RtfText = oldEditor.RtfText
    

    还可以创建一个公共属性,允许您从表单外部访问您需要访问的内容

    Public Property RtfText() As String
        Get
            Return richTextBox.Rtf
        End Get
        Set(ByVal value As String)
            richTextBox.Rtf = value
        End Set
    End Property
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 2014-08-24
      相关资源
      最近更新 更多