0

目标和问题

为了将用户条目导出到XML文件,我构建了一个包含所有所需对象列表的表。有Textboxes,Checkboxes等,但也有“内部”对象,例如DoubleBoolean

对于 Visual Studio 工具箱中存在的对象(即Textboxesand Checkboxes),一切正常,但对于“内部”对象则不然。

这是我的做法。

1. 制作对象列表

tableSaveDataTable我的列表所在的位置。每行对应一个要保存的对象。它们以下列方式添加:

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总是空的,返回0or ""

知道为什么吗?

谢谢!

回答

由于varocarbas的回答,我已经能够解决我的问题。这是诀窍:

我正在使用 aFor进入表格。对于每一行,我都在定义

Dim ObjectToSave As Object = tableSave.Rows(i).Item("Object")

删除 As Object 允许为所谓的 ObjectToSave 分配正确的类型。

Dim ObjectToSave = tableSave.Rows(i).Item("Object")

但是,我仍然不明白为什么它不起作用,只有“内部”对象。

4

1 回答 1

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
于 2013-06-28T12:17:34.837 回答