none
panelにUserControlを貼り付ける方法を教えてください。 RRS feed

  • 質問

  • Formを作ってそのformにsplitContainerとボタンを作り、ボタンを押すとsplitContainerのpanel2に

    色々なUserControlが表示されるようなものを作りたいのですがうまくいきません。

    どなたかご教授お願いいたします。

    2006年12月26日 7:12

すべての返信

  • なにがどのようにうまくいかないのでしょうか。
    そこがわからないと回答に困ってしまいます。

    とりあえずデザイナ画面で SplitContainer の Panel2 に UserControl を貼り付けて、
    [フォーム名].Designer.cs を覗いてみてください。
    やりたいコードが自動生成されていると思いますので、参考にしてみてください。

    2006年12月26日 8:52
  • こんにちは、ダッチさん。

    説明不足でした、申し訳ありません。

    MDI親フォームをにsplitContainerを配置して、パネル1にMDIの子フォーム1を配置して

    子フォーム1にツリーを配置します。

    子フォーム1のツリーをダブルクリックすると、splitContainerのパネル2に子フォーム2を表示できるようにしたいのですが、

    子フォーム1のツリービューをダブルクリックすると新たにMDIフォームが表示されてしまいます。

     

    private void MDIParent1_Load(object sender, EventArgs e)
            {
                Form1 Form1 = new Form1();
                Form1.MdiParent = this;
                this.splitContainer1.Panel1.Controls.Add(Form1);
                Form1.Show();
            }
            public void abc()
            {
                Form2 Form2 = new Form2();
                Form2.MdiParent = this;
                this.Visible = true;
                this.splitContainer1.Panel2.Controls.Add(Form2);
                Form2.Show();
            }

    public Form1()
            {
                InitializeComponent();
            }
            private void treeView1_DoubleClick(object sender, EventArgs e)
            {
                MDIParent1 MDIParent1 = new MDIParent1();
                MDIParent1.abc();
            }

    初歩的な質問ですが、ご教授お願い致します。

    2006年12月28日 6:42
  • MDIParent1 MDIParent1 = new MDIParent1();
    MDIParent1.abc();

    これだと new しているので新しい MDIParent1 を生成してしまいます。
    そのため、新しい MDI フォームが表示されてしまったのでしょう。

    Form1 を生成した MDIParent1 の abc メソッドを読んでやれば解決するんですが、
    どのようにして Form1 を生成した MDIParent1 のメソッドを呼ぶかというと
    Form1 の MdiParent プロパティから取得できそうですが、
    splitContainer1 の子コントロールとしてすでに追加されてしまっている為、それは出来ません。

    すると、Form1 に独自のプロパティを設けるか、
    Form1 から イベントを発生するなどになると思います。

    子供から親を呼ぶのはあまりお勧めできませんので、イベントを発生させてみてはどうでしょうか。
    そのイベントを MDIParent1 が捕らえて MDIParent1 が自ら abc メソッドを読んでやれば目的の動作が出来るでしょう。

    2006年12月28日 8:59
  • MDIParent1 が自ら abc メソッドを呼んでうまく動きました。

    ご教授ありがとうございました。

    2007年1月9日 5:12