将字符串转换回选项卡控件 属性
Convert String back to Tab Control Property
背景
我已经序列化了选项卡控件的 属性,选定的选项卡。我正在使用两个对象列表来存储正在序列化的对象预设对象。
Dim _allPresetsList As New List(Of PresetObject)
Dim _XmlPresetsList As New List(Of PresetObject)
preset.TabPageProperty = TabControl1.SelectedTab.ToString()
Dim objStreamWriter As New StreamWriter(_XmlLocation)
Dim xml As New XmlSerializer(_allPresetsList.GetType)
xml.Serialize(objStreamWriter, _allPresetsList)
objStreamWriter.Close()
用于反序列化的代码
Dim objStreamReader As New StreamReader(_XmlLocation)
_XmlPresetsList = xml.Deserialize(objStreamReader)
objStreamReader.Close()
但是我无法将它转换回来,这是我用其他控件成功完成的方法。
CheckBox1.Checked = _XmlPresetsList(0).CheckBox1Property.ToString()
虽然这不起作用
TabControl1.SelectedTab = _XmlPresetsList(0).TabPageProperty.ToString()
我遇到了这个错误
Value of type 'String' cannot be converted to
'System.Windows.Forms.TabPage'.
问题
如何将选项卡控件字符串 属性 从字符串转换回?
这可能是导致您的错误的原因:
preset.TabPageProperty = TabControl1.SelectedTab.ToString()
这只是为了保存 "TabPage: {TabPage1}" 之类的东西。由于 SelectedTab
是一个对象 属性,它不能被序列化并且保存它的类型名称对于确定选择了哪个没有太大帮助。正如错误所述,您不能从字符串中创建 TabPage
对象。而是保存和恢复更简单的东西,比如选定的索引:
preset.TabPageIndex = TabControl1.SelectedIndex
我不确定 PresetObject
的内部结构,但我会使用类型化属性 - 在本例中为 Int32
而不是字符串。序列化程序将为您来回转换。
您还应该开启 Option Strict
。
CheckBox1.Checked = _XmlPresetsList(0).CheckBox1Property.ToString()
Checked
是一个布尔值,但您要为其分配一个字符串值。 Option Strict
on 将在您离开 VB 进行此类转换时发出警告。
背景
我已经序列化了选项卡控件的 属性,选定的选项卡。我正在使用两个对象列表来存储正在序列化的对象预设对象。
Dim _allPresetsList As New List(Of PresetObject)
Dim _XmlPresetsList As New List(Of PresetObject)
preset.TabPageProperty = TabControl1.SelectedTab.ToString()
Dim objStreamWriter As New StreamWriter(_XmlLocation)
Dim xml As New XmlSerializer(_allPresetsList.GetType)
xml.Serialize(objStreamWriter, _allPresetsList)
objStreamWriter.Close()
用于反序列化的代码
Dim objStreamReader As New StreamReader(_XmlLocation)
_XmlPresetsList = xml.Deserialize(objStreamReader)
objStreamReader.Close()
但是我无法将它转换回来,这是我用其他控件成功完成的方法。
CheckBox1.Checked = _XmlPresetsList(0).CheckBox1Property.ToString()
虽然这不起作用
TabControl1.SelectedTab = _XmlPresetsList(0).TabPageProperty.ToString()
我遇到了这个错误
Value of type 'String' cannot be converted to 'System.Windows.Forms.TabPage'.
问题
如何将选项卡控件字符串 属性 从字符串转换回?
这可能是导致您的错误的原因:
preset.TabPageProperty = TabControl1.SelectedTab.ToString()
这只是为了保存 "TabPage: {TabPage1}" 之类的东西。由于 SelectedTab
是一个对象 属性,它不能被序列化并且保存它的类型名称对于确定选择了哪个没有太大帮助。正如错误所述,您不能从字符串中创建 TabPage
对象。而是保存和恢复更简单的东西,比如选定的索引:
preset.TabPageIndex = TabControl1.SelectedIndex
我不确定 PresetObject
的内部结构,但我会使用类型化属性 - 在本例中为 Int32
而不是字符串。序列化程序将为您来回转换。
您还应该开启 Option Strict
。
CheckBox1.Checked = _XmlPresetsList(0).CheckBox1Property.ToString()
Checked
是一个布尔值,但您要为其分配一个字符串值。 Option Strict
on 将在您离开 VB 进行此类转换时发出警告。