簡體   English   中英

根據用戶控件C#更改窗口大小

[英]Change window size depending on user control c#

所以我有一個MainForm,其中有一個面板。 為此,我創建了幾個UserControl,可以根據需要通過不同的按鈕將其放入面板中。

我的問題是:我需要根據我在面板中擁有的UC更改MainForm上的windowsize。 我該怎么做呢?

我當時想在MainForm中創建一個公共方法,然后在不同的UC加載時調用它,您怎么看? 給我您最好的解決方案。 謝謝。

編輯:如果這有什么幫助,這是在我的MainUC代碼中引入其他UC來替換面板中的MainUC

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();
        }

在每個UserControl您可以創建一個事件,該事件應在內容更改時觸發。 例如,您可以在單擊按鈕時創建事件

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);

然后,您可以在MainForm中訂閱事件,並在適當時更改面板內容和窗口大小。

public partial class MainForm : Form
{
    MyControl myControl;

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM