FormChildがFormParentを継承しているとしましょう。親では、上部にツールチップがあります。子フォームで要素を追加したいのですが、修飾子をprotectedに設定したにもかかわらず、コントロールは常にロックされています。
インターネットをチェックしましたが、これはよく知られたバグのようです。しかし、誰かが回避策か何かを知っていますか?
FormChildがFormParentを継承しているとしましょう。親では、上部にツールチップがあります。子フォームで要素を追加したいのですが、修飾子をprotectedに設定したにもかかわらず、コントロールは常にロックされています。
インターネットをチェックしましたが、これはよく知られたバグのようです。しかし、誰かが回避策か何かを知っていますか?
FormChild.Designer.cs ファイルを手動で編集できます。そこで、継承されたツールストリップにアクセスできます。
編集:
このクラスを追加します。
//System.Design.dll required
[Designer(typeof(System.Windows.Forms.Design.ControlDesigner))]
public class InheritableToolStrip : ToolStrip { }
プロジェクトをコンパイルする
デザイナーでコントロールを設計できるはずです。少し試してみました-うまくいくようです。
Ps Iam は VS2010、.NET v4 を使用しています
Microsoft は、複雑なコントロールの Visual Inheritance をロックダウンしました。これは、継承ツリーに対する子項目コントロールのデザイナ シリアル化を簡単な方法で管理する方法を理解できなかったためです。
簡単な回避策 (同じ効果が得られます) は、非表示のツールストリップをサブフォームにドロップし、ロード時にそれを基本フォームのツールストリップとマージすることです。
このように、ツールストリップを子フォームに渡すことができます。
public partial class ChildForm : Form
{
private readonly ToolStrip parentToolStrip;
public ChildForm(ToolStrip strip)
{
parentToolStrip = strip;
}
}
上記のコード構文が間違っている可能性があることに注意してください。コントロール名がToolStripよりも長いことはわかっています。概念を示すために、デモとして使用しました。