我有一个带有控制定义的 xml
<?xml version="1.0" encoding="utf-8"?>
<Controls>
<TabControl>
<Properties>
<Dock>5</Dock>
</Properties>
<TabPage>
<TextBox>
<Properties>
<Text>Id:</Text>
<Location>106,12</Location>
<Size>113,20</Size>
<BorderStyle>2</BorderStyle>
</Properties>
</TextBox>
<MyControl>
<Properties>
<Visible>True</Visible>
<Location>106,33</Location>
<Size>113,20</Size>
<Enabled>True</Enabled>
<BorderStyle>2</BorderStyle>
<Text>Action:</Text>
<TabIndex>0</TabIndex>
</Properties>
</MyControl>
<Properties>
<Text>Details</Text>
</Properties>
</TabPage>
</TabControl>
</Controls>
好的。如您所见,我在此示例中有一个 tabControl 和一个 TabPage。TabPage 有一个TextBox 和一个MyControl。
我能够读取 xml 并添加除 MyControl 之外的所有控件。原因是我找不到类型。说明:为了运行 xml 并添加控件,我想找到它是什么类型。所以我使用这行代码:
Dim oType As Type = FindType("System.Windows.Forms." & elem.Name.ToString)
FindType 是我在这里找到的一个函数:Best way to get a Type object from a string in .NET
不幸的是,我无法弄清楚要在这个函数中添加什么来找到 MyControl。MyControl 只是添加到我的解决方案中的自定义控件。
我知道我可以在 FindType 函数中使用 if
if base is Nothing then
if name.Contains("MyControl")Then
base = GetType(MyControl)
End If
End If
If base IsNot Nothing Then Return base
我的问题是我有 3 个自定义控件,也许将来我会添加更多。有什么方法可以通用吗?
另一个问题是在 FindType 函数中我必须使用“System.Windows.Forms”。为名。我发现没有它,函数不会返回任何东西。我认为这是因为我在构建表单时调用了该函数,所以还没有加载所有内容?
谢谢你的时间