私はcontrols
を動的に追加するプログラムを持っています。制御タイプはdatabase
の値に基づいています。たとえば、Database
の値がLabel
の場合、プログラムは動的にコントロールを作成します。フォームにカスタムコントロールを動的に追加する方法
コントロールを動的に作成することは効果的です。私は、関数の下に使用しています。その後、
Type typeFrm = typeof(Form);
Assembly assb = typeFrm.Assembly;
Type controlType = assb.GetType("System.Windows.Forms." + strType);
object obj = Activator.CreateInstance(controlType);
Control control = (Control)obj;
return control;
Control ctrl = CreateControl(strCtrlType);
その他のコードを設定するコントロールの位置、幅、高さなどのectれます。
私の質問はcustom control
です。どのようにフォームに動的に追加されますか?私は上記の機能を試してみましたが、行変更:
Type controlType = assb.GetType("System.Windows.Forms." + strType);
Type controlType = assb.GetType("CustomCtrl." + strType);
しかし、その動作していない
にします。関数は常にnull
を返します。
サンプルカスタムコントロールコードを参照してください。
namespace CustomCtrl
{
public class CButton : Button
{
public CButton() : base()
{
}
}
}
私は 'タイプcontrolType = assbをしようとすると.GetType( "CustomCtrl。" + strType).AssemblyQualifiedName; 'は文字列をSystem.Typeに変換できません。 – Zhyke
@Zhyke - Type.GetType( "namespace.Type、assembly.dll、Version = 0.0.0.0、Culture = neutral、PublicKeyToken = null") 'を使用する必要があります。タイプ ")。AssemblyQualifiedName'。後者は明らかに機能しません。 – Enigmativity