为了将用户条目导出到XML
文件,我构建了一个包含所需所有对象列表的表。有Textboxes
,Checkboxes
等,还有“内部”对象,例如Double
或Boolean
。
对于Visual Studio工具箱中存在的对象(即Textboxes
和Checkboxes
),一切都很顺利,但对于“内部”对象则没有。
我是这样做的。
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
然后我在XML
文件中写下所有内容。根据{{1}}类型,采取了不同的行动:
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
始终为空,返回ObjectToSave
或{ {1}}。
知道为什么吗?
谢谢!
由于 varocarbas 的答案,我已经能够解决我的问题了。这是诀窍:
我使用0
进入表格。对于每一行,我都在定义
""
删除As对象可以为所谓的ObjectToSave分配正确的类型。
For
但我仍然不明白,为什么它不起作用,仅与“内部”对象。
答案 0 :(得分:1)
这里有一个代码可以提供您所追求的内容:
Dim ObjectToSave = GetType(Double) 'GetType(CheckBox)
Select Case ObjectToSave
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