異なる外観の入力を対象としていますが、すべて同じ外観と共通の動作を共有する必要があるコントロールをいくつか作成しています。だから、私はUserControlから継承したBaseClassを作成し、すべてのコントロールはBaseClassから継承します。winformsデザイナーで継承されたコントロールにアクセスする方法
しかし、TableLayoutPanelのようなデザイナーでBaseClassのコントロールを追加すると、継承したクラスをデザインするときに、私はそれらにアクセスできなくなります。私はTableLayoutPanelを見ていますが、彼が "保護されていても"私はそれを変更したり、デザイナーを通してコントロールを置くことはできません。私はコードでそれにアクセスするのに問題はありませんが、私はデザイナーを使う能力を失いたくはありません。
今、BaseClassからすべてのコントロールを削除し、継承された各クラスのレイアウトとすべての共通コントロールを追加してから、参照を使用してBaseClass内で操作します。しかし、それはまったく私を満足させるものではありません。継承された保護されたメンバーコントロールでデザイナーを動作させる方法はありますか?
環境:SLaksの提案に答えるためのC#、.NET 3.5は、Visual Studio 2008の
EDIT。私はプロパティを設定しようとしましたが、私はそれらを使用するのに慣れていませんが、動作していないようです。私が試したコードはここにあります:
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
public TableLayoutPanel TableLayoutPanel1
{
get { return tableLayoutPanel1;}
set { tableLayoutPanel1 = value;}
}
}
public partial class UserControl2 : UserControl1
{
public UserControl2()
{
InitializeComponent();
}
}
TableLayoutPanel自体から継承できますか? – SLaks
もちろん、winformsコントロールから継承した独自のコントロールをいつでも作成できます。私はいくつかのコントロールを実装するためにこれを行いました。しかし、これは私がここで達成しようとしていることではありません。私は内部にいくつかのコントロール(ラベルなど)を持つtablelayoutpanelと、継承したクラスが選択したコントロールでいっぱいになるいくつかの空白スペースを持つコントロールをいくつか持っています。 最後の目標は、これらのコントロールをすべてツールボックスに追加し、デザイナーにドラップ&ドロップして、多くのコントロールを持つフォームを作成し、これらのコントロール全体で共通の動作/レイアウトを作成することです。 – Ksempac
そしてbtwはWinformコントロールを継承してデザイナーを省略します。通常は、コントロールは自分でコントロールを再設計するのではなく、特定の動作のみを実装するためです。 – Ksempac