2017-06-07 10 views
0

したがって、PanelがあるMainFormがあります。 これに対して、私は、異なるボタンからの要求に応じてPanelに配置するいくつかのUserControlを作成しました。ユーザーコントロールに応じてウィンドウのサイズを変更します。C#

私の質問は、パネルにあるUCに応じてMainFormのwindowsizeを変更する必要があります。これはどうすればいいですか?

MainFormでパブリックメソッドを作成し、ロード時に別のUCで呼び出すことを考えていましたが、どう思いますか?あなたに最高の解決策を教えてください。ありがとう。

編集:これは任意のヘルプにある場合、これはあなたがコンテンツトリガーされるイベントを作成することができ、各UserControlでパネル

private void UC1Button_Click(object sender, EventArgs e) 
    { 
     Panel MainPanel = MainForm.MainPanel; 
     if (!MainPanel.Controls.Contains(UC1.Instance)) 
     { 
      MainPanel.Controls.Add(UC1.Instance); 
      UC1.Instance.Dock = DockStyle.Fill; 
      UC1.Instance.BringToFront(); 
     } 
     else 
     { 
      UC1.Instance.BringToFront(); 
     } 

答えて

0

でMainUCを置き換えるために、他のUCをもたらすために私MainUCコードであります変更する必要があります。ボタンはあなたのMainFormあなたがイベントをサブスクライブし、必要に応じてパネルの内容やウィンドウのサイズを変更することができますに続いて

public partial class MyControl : UserControl 
{ 
    public event OnButtonClicked ButtonClicked; 

    public MyControl() 
    { 
     InitializeComponent(); 
    } 

    private void MyButton_Click(object sender, EventArgs e) 
    { 
     if(ButtonClicked != null) 
     { 
      ButtonClicked((Button)sender); 
     } 
    } 
} 

public delegate void OnButtonClicked(Button button); 

をクリックされたときに、たとえば、あなたがイベントを作成することができます。

public partial class MainForm : Form 
{ 
    MyControl myControl; 

    void Subscribe() 
    { 
     myControl.ButtonClicked += myControl_ButtonClicked; 
    } 

    void myControl_ButtonClicked(Button button) 
    { 
     // Change panel content 
     // Resize window 
    } 
} 
+0

これは機能しません。 – Luddebror

+0

それはうまくいかないという意味ですか?これはガイドラインコードのためのものです。 –

+0

はい、私はそれを理解しています。私はあなたのコードの一部を取り出し、それを私のやり方で変更しました。それは動作しません。すべてのコードを投稿したいのですか? – Luddebror

関連する問題