目标和问题
为了将用户条目导出到XML
文件,我构建了一个包含所有所需对象列表的表。有Textboxes
,Checkboxes
等,但也有“内部”对象,例如Double
或Boolean
。
对于 Visual Studio 工具箱中存在的对象(即Textboxes
and Checkboxes
),一切正常,但对于“内部”对象则不然。
这是我的做法。
1. 制作对象列表
tableSave
是DataTable
我的列表所在的位置。每行对应一个要保存的对象。它们以下列方式添加:
AddSaveObject("Category", "Subcategory", "Name", ObjectToSave)
和
Private Sub AddSaveObject(Category As String, Subcategory As String, _
Name As String, ObjectToSave As Object)
Dim newRow As DataRow = tableSave.NewRow()
Dim columnValuesArray() As Object = New Object() {Category, Subcategory, Name, ObjectToSave}
newRow.ItemArray = columnValuesArray
tableSave.Rows.Add(newRow)
End Sub
2. 写入 XML
然后我将所有内容都写入我的XML
文件中。根据ObjectToSave
类型,采取不同的行动:
Select Case ObjectToSave.GetType
Case GetType(CheckBox)
ValueToWrite = ObjectToSave.Checked.ToString
Case GetType(Boolean)
ValueToWrite = ObjectToSave.ToString
Case GetType(Double)
ValueToWrite = ObjectToSave.ToString
Case GetType(...)
...
Case Else 'for Textboxes etc.
ValueToWrite = ObjectToSave.text
End Select
问题
在Boolean
, Double
, String
, 或其他自定义类的情况下, theObjectToSave
总是空的,返回0
or ""
。
知道为什么吗?
谢谢!
回答
由于varocarbas的回答,我已经能够解决我的问题。这是诀窍:
我正在使用 aFor
进入表格。对于每一行,我都在定义
Dim ObjectToSave As Object = tableSave.Rows(i).Item("Object")
删除 As Object 允许为所谓的 ObjectToSave 分配正确的类型。
Dim ObjectToSave = tableSave.Rows(i).Item("Object")
但是,我仍然不明白为什么它不起作用,只有“内部”对象。