4

FormChildがFormParentを継承しているとしましょう。親では、上部にツールチップがあります。子フォームで要素を追加したいのですが、修飾子protectedに設定したにもかかわらず、コントロールは常にロックされています。

インターネットをチェックしましたが、これはよく知られたバグのようです。しかし、誰かが回避策か何かを知っていますか?

4

3 に答える 3

4

FormChild.Designer.cs ファイルを手動で編集できます。そこで、継承されたツールストリップにアクセスできます。

編集:

  1. このクラスを追加します。

    //System.Design.dll required
    [Designer(typeof(System.Windows.Forms.Design.ControlDesigner))]
    public class InheritableToolStrip : ToolStrip { }
    
  2. プロジェクトをコンパイルする

  3. ツールボックスから InheritableToolStrip を使用して FormParent に追加します。
  4. Modifier プロパティを protected に変更します。
  5. FormChild の継承されたツールストリップにアイテムを追加します。

デザイナーでコントロールを設計できるはずです。少し試してみました-うまくいくようです。

Ps Iam は VS2010、.NET v4 を使用しています

于 2011-07-14T07:32:05.107 に答える
0

Microsoft は、複雑なコントロールの Visual Inheritance をロックダウンしました。これは、継承ツリーに対する子項目コントロールのデザイナ シリアル化を簡単な方法で管理する方法を理解できなかったためです。

簡単な回避策 (同じ効果が得られます) は、非表示のツールストリップをサブフォームにドロップし、ロード時にそれを基本フォームのツールストリップとマージすることです。

ここで無料で使用できる MergableToolStrip コントロールを開発しました

于 2012-05-21T00:14:51.310 に答える
-1

このように、ツールストリップを子フォームに渡すことができます。

public partial class ChildForm : Form
{ 
    private readonly ToolStrip parentToolStrip;

    public ChildForm(ToolStrip strip)
    {
        parentToolStrip = strip;
    }
}

上記のコード構文が間違っている可能性があることに注意してください。コントロール名がToolStripよりも長いことはわかっています。概念を示すために、デモとして使用しました。

于 2011-07-14T07:26:17.730 に答える