作業するプロジェクトのフォームレイアウトを簡単な方法で調整するために、フォームテーマクラスライブラリを作成しようとしています。
これは基本的にそれがどのように見えるべきかについての考えです:
基本的に、プラグインは次のように機能します。
// form class, which inherits the plugin class
class FormToTheme : ThemedForm
{
public FormToTheme()
{
// some code here
}
}
// plugin class itself
class ThemedForm: Form
{
public ThemedForm()
{
// some code here
}
}
基本的に、FormBorderStyleをNoneに設定し、コードでレイアウトを描画しました。
ただし、追加されたコントロールをカスタムタイトルバーに配置できるようになりました。これは、デフォルトのFormBorderStyleを保持している場合、通常のフォームでは不可能です。そこで、ユーザーコントロールではなく、コンテンツパネルにコントロールを自動的に追加することで、これを回避できると考えました。
だから私がやろうとしたのはこれでした:
private void ThemedForm_ControlAdded(Object sender, ControlEventArgs e)
{
// some simple code to set the control to the current theme I'm using
e.Control.BackColor = Color.FromArgb(66, 66, 66);
e.Control.ForeColor = Color.White;
// the code where I try to place the control in the contentPanel controls array,
// and remove it from it's parent's controls array.
if (e.Control.Name != contentPanel.Name)
{
e.Control.Parent.Controls.Remove(e.Control);
contentPanel.Controls.Add(e.Control);
}
}
しかし、メインフォームとビジュアルエディターで新しいコントロールを追加しようとすると、次のエラーが発生します。
child is not a child control of this parent
だから私の質問は:このエラーを回避し、コントロールをユーザーコントロールからコンテンツパネルに移動する方法はありますか?
メインフォームからメソッドを呼び出すのではなく、ThemedFormクラスでこれを自動化する必要があることに注意してください。
編集:
私はこれを試しました:http:
//forums.asp.net/t/617980.aspx
しかし、それはビジュアルスタジオをフリーズさせるだけであり、それから私は再起動する必要があります。