• 締切済み

MenuStripの継承でプロパティが反映されない

お世話になっております。 Visual Studioを使用してプログラムを実施しております。 MenuStripクラスを継承した自作クラスAをFormに張り付けて、 自作クラスBを作成しました。 Visual Studio上で、自作クラスBを開き、自作クラスAのプロパティ「Items」を使用して メニューアイテムの設定を変更しようとしているのですが、「Items」の設定が、自作クラスB のデザイナに反映されず困っております。。。 MenuStripを継承したクラスの場合、設定されているメニューアイテムの設定は 変更できないのでしょうか。

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

こちらが参考になるかも …

参考URL:
http://www.kanazawa-net.ne.jp/~pmansato/net/net_make_ControlDesigner.htm
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

ん~ 簡単にはいかないと思いますよ UserControl内に配置したメニューを フォームデザイナ側で編集したいとなると UserControlクラスに カスタムデザイナを実装しなければいけないようです MSDNのチュートリアル 「Visual Studio のデザイン時機能を活用した Windows フォーム コントロールの作成 」 を参考にして見ましょう

参考URL:
http://msdn.microsoft.com/ja-jp/library/35ea88wb(v=vs.110).aspx
wafu1318
質問者

お礼

簡単にはいかないのですね。。。 もう少し分かりやすいサイトはありませんか? もしあれば教えて頂けると助かります。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

現象の再現できる 最小の手順とコードの提示をしたほうがいいと思います 1) メニュークラスの追加 // MenuStripを継承したクラス // クラスの追加で class.csを追加 // using の Windows.Formsを追加 using System.Windows.Forms; namespace CSTest001 {   // [public]と[: MenuStrip]を追加   public class TestMenuStrip : MenuStrip   {   } } 2) このプロジェクトをビルド 3) デザイナでフォームに貼り付け 4) 追加したTestMenuStrip1のプロパティ Itemsを変更 といった手順だと希望通りの動きのように思えます …

wafu1318
質問者

補足

ご回答ありがとうございます。 情報が不足しており申し訳ありません。 自分が想定しているのは以下のような場合です。 using System.Windows.Forms; namespace WindowsFormsApplication1 { class Class1 : UserControl { private MenuStrip menuStrip; public MenuStrip MenuStrip { get { return menuStrip; } set { menuStrip = value; } } private ToolStripLabel toolStripLabel; public ToolStripLabel ToolStripLabel { get { return toolStripLabel; } set { toolStripLabel = value; } } public Class1() { //UserControlにMenuStripを貼り付け //MenuStripにToolStripLabelを貼り付け } } } ユーザーコントロールで複数のコントロールを貼り付けたクラス(自作クラスA)を 自作クラスBのデザイナ側で変更できるかを知りたいのですが、可能でしょうか。 お手数をお掛けいたしますが、宜しくお願いいたします。

関連するQ&A

  • 【C++】メソッドやプロパティの隠蔽

    基底クラスAで、Public でメソッドXと、メソッドYが定義されているとき、 それを継承したクラスBで、何らかの方法でメソッドXと、メソッドYを隠蔽させ、 クラスBを継承したクラスCでは、メソッドXと、メソッドYが使えないようにさせることはできますか? ※Visual Studioで、クラスCの入力サポート(メンバーや、メソッドの入力候補を出してくれる機能)で、 メソッドXや、メソッドYが出ないようにしたいです。 ※同様に、メンバーに対しても、隠蔽化をしたいです。

  • 継承について

    みなさま、どうかお知恵を貸して下さい。 javaを勉強中で、本を読みながら試しに動かしています。 現在、実現したい動作が実現可能かどうかを調べているところです。 そのため、環境やバージョン等は決まっておりません。 むしろ、実現可能な環境やバージョンがあれば、教えてください。 実現したい機能ーーーーーーーーーーーー 親クラスAにメンバーとメソッドを定義します。 Aを継承する子クラスBを定義します。 プログラム中で、A、Bのインスタンスを生成します。 そして、A、Bを継承するCのインスタンスを生成したいのです。 Cのメンバーやメソッドは、Bと同様のものです。 この場合、BのクラスからCのようなインスタンスを作成することは、可能なのでしょうか? ・・・Cを定義していないので、おそらく不可能かと思います。 やはりこういった場合、Aを継承しているBを継承するCクラスを定義しておく必要があると考えています。 では、Cを継承するD,Dを継承するE・・・というように、いくつ必要になるかわからない場合、最大数分継承したクラスを用意すべきでしょうか。 なぜ、そうしたいかというと、組織図のようなものを作成したいのですが、組織図を構成する人数は、ユーザーの任意としたいのです。 継承したクラスを用いれば、そのまま組織図の体系を表現できる気がしました。 質問が大雑把になってしまい、申し訳ないのですが、お力を貸していただければ幸いです。

    • ベストアンサー
    • Java
  • C++を勉強し始めたばかりの初心者なのですが、クラスの継承に関して・・・

    Visual C++ 2008で、新しいwindowsフォームアプリケーションを作成したら、Form1.hの上の方に public ref class Form1 : public System::Windows::Forms::Form という行がありました。これは開発環境に実装されている System::Windows::Forms::Formクラスを継承し、Form1クラスを新たに作成しますという意味なのですよね? このとき、2つ目のpublicは、継承の仕方、この場合結果的にはSystem::Windows::Forms::Formクラスに含まれるメンバの、private以外がそのまま受け継がれる、という事になりますよね? それで、このref classというのは、ポインタみたいな意味でしょうか?refは書かないと別の継承方法になるのでしょうか? また、最初のpublicはどういう意味なのでしょう? もしかして、この2つについては、System::Windows::Forms::Formクラスを継承して新規フォームを作る場合の、定型みたいなものなのでしょうか?

  • クラスの継承でメンバ変数が・・

    初めてクラスの継承をしている者です。 親クラスA のメンバ変数らを 親クラスAからの処理で呼び出した 子クラスB で変更したいのですが、 子クラスB内ではちゃんと処理で数値が変化するのですが、 親クラスAに戻ると数値が全て初期値に戻ってしまいます。 継承方法は単に public 親クラスA と記述しているだけで、 親クラスAと子クラスBは別々のファイルに1クラスずつで記述しています。 コンパイルは警告もエラーも出ず動きます。 子クラスから親クラスのメンバ変数を変更するにはどうすれば良いのでしょうか?

  • 継承・実装の関係で悩んでいます。

    継承・実装の関係について悩んでいます。 ここでは、アクセス制御を考えずに、インスタンスかstaticかabstract(ここではabstract final staticやabstract classのこと)の違いで、どう継承するのか考えています。 // 継承 はメソッドのオーバーライドのことを考えます。(オーバーロードは考えない) クラスAからクラスBでオーバーライドしたメソッドは、 クラスCでさらにオーバーライドできるのでしょうか? クラスCが クラスBのクラスAからオーバーライドしたメソッド をクラスBのメソッドとして見たときに、オーバーライドすることは可能なのでしょうか? クラスA │ インスタンスフィールドA │ staticフィールドA │ │ クラスA() { } │ │ インスタンスメソッドA () { } │ staticメソッドB() { } ↓ クラスB extends クラスA │ インスタンスフィールドA // 継承 │ インスタンスフィールドB │ staticフィールドB │ │ サブクラス1() { } // コンストラクタは継承しない、super()で呼び出す │ │ インスタンスメソッドA () { } // 継承 │ │ インスタンスメソッドB () { } │ staticメソッドB () { } ↓ クラスC extends クラスB implements インタフェースD, ... ↑ インスタンスフィールドA // クラスBのフィールドを継承 │ インスタンスフィールドB // クラスBのフィールドを継承 │ インスタンスフィールドC │ staticフィールドC │ │ サブクラス2() { } │ │ インスタンスメソッドA () { } // クラスBのメソッドを継承 │ インスタンスメソッドB () { } // クラスBのメソッドを継承 │ インスタンスメソッドD () { } // インタフェースDのメソッドを実装 │ インスタンスメソッドE () { } // インタフェースDのメソッドを実装 │ │ │ インスタンスメソッドC () { } │ staticメソッドC() { } │ interface インタフェースD extends インタフェースE ↑ │ staticフィールドD // public static final │ │ インスタンスメソッドD() { } // public abstract │ インスタンスメソッドE() { } // 継承 │ interface インタフェースE staticフィールドE // public static final インスタンスメソッドE() { } // public abstract

    • ベストアンサー
    • Java
  • C# フォームを追加するとエラー

    C# 勉強中の者です。Visual Studio 2008 を使用しています。 既に一つのフォームで実行できているプロジェクトがあり、[プロジェクト]-[Windows フォームの追加]から追加してフォームを2つにしてみようと思いましたが、以下エラーが出てしまいます。 <エラー内容> ファイル内にデザインできるクラスがないため、このファイルのデザイナを表示できませんでした。ファイルの以下のクラスがデザイナで見つかりました: Form2 --- 基本クラス 'System.Object' をデザインできません。 <このエラーのヘルプ> Visual Studio 内のクラスが、画面上でデザインできるクラスから継承されていないため、ファイルのデザイナを開けません。 どうすればフォームを追加することができるのでしょうか? よろしくお願いします。

  • プロパティウィンドウのプロパティを非表示にするには?

    Inherits System.Windows.Forms.Button を継承してサイズや色を設定しています。 デザイナで貼り付けたあとサイズや色のプロパティが 変更できてしまうのですが、このプロパティを 非表示にする事は可能でしょうか? 使用環境はVB 2005です。

  • 抽象クラスの継承について

    すいませんがご教授下さい。 ASP.NETとVB.NETを使用してアプリを開発しています。 存在するクラスは以下のようなクラスです。 (WebForm1.aspxとWebForm1.aspx.vbとClass1.vb(抽象クラス)があります。) したい事はClass1.vbをWebForm1.aspx.vbが継承したいのですが継承させた後にWebForm1.aspxを開こうとすると「Webフォームデザイナにファイルを読み込めませんでした。・・・・」とエラーポップアップが表示されます。「はい」でHTMLは見れるのですがデザインはタブ自体がないです。普通のクラスを継承させると問題ないのですが。抽象クラスだとエラーになります。 対処方を教えて下さい。

  • JAVAの継承について

    JavaでクラスA,B,Cがあり、A,BはクラスCを継承しています。 この時にAのインスタンスを生成しCにある変数に値を設定します。 この設定した情報をBのインスタンスに一気に設定することは可能でしょうか? やりたいこととしてはAに設定した情報をBにコピーするようなイメージです。 すべてのsetterを呼びだして設定するのが面倒なので。 例)構文的に間違ってるかもしれませんがやりたいことは以下のような感じです。 A a = new A(); a.setStr("aaa"); a.setInt(5); B b = new B(); b.setStr(a.getStr()); b.setInt(a.getInt(); class A extends C{} class B extends C{} class C {  int x = 0;  String str = "";  private String setStr(String str){this.str=str;}  private String setInt(int i){this.x=i;}  private String getInt(){return this.x;}  private String getStr(){return this.str;} }

    • ベストアンサー
    • Java
  • 継承について

    継承についてです。 class A { int x; } class B extends A{ public int test(){ return 1; } public static void main(String[]args){ A a = new B; a.test(); } } としたとき a.test(); という記述はできないものなのでしょうか?a.textでコンパル時にエラーが出ます。aはBのインスタンスを指しているから、test()もつかえるんじゃないかなとおもったのですが・・・ public int test(){return 0;}というのをクラスAに記述すればエラーは起こりませんが、これはわかります。 ウェブを探したのですが、検索の仕方が悪かったのかこれに関する記事をさがせなかったので質問いたしました。

    • ベストアンサー
    • Java

専門家に質問してみよう