コントロール定義を含む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>
Ok。ご覧のとおり、この例では、1つのTabPageを持つ1つのtabControlがあります。TabPageには、1つのTextBoxと1つのMyControlがあります。
xmlを読み取り、MyControlを除くすべてのコントロールを追加できます。その理由は、タイプが見つからないためです。説明:xmlを実行してコントロールを追加するために、それがどのタイプであるかを見つけたいと思います。したがって、次のコード行を使用します。
Dim oType As Type = FindType("System.Windows.Forms." & elem.Name.ToString)
FindTypeは、私がここで見つけた関数です。.NETの文字列からTypeオブジェクトを取得するための最良の方法
残念ながら、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つのカスタムコントロールがあることです。将来的にはさらに追加する予定です。何か一般的なものを作る方法はありますか?
もう1つの質問は、FindType関数で「System.Windows.Forms」を使用する必要があるということです。名前のために。そして、それがないと関数は何も返さないことを発見しました。これは、フォームを作成するときにその関数を呼び出すために発生すると考えていますが、まだすべてが読み込まれているわけではありませんか?
御時間ありがとうございます