根据用户控件更改 window 大小 c#

Change window size depending on user control c#

所以我有一个主窗体,其中有一个面板。 为此,我创建了几个用户控件,我将根据不同按钮的请求将它们放入我的面板中。

我的问题是:我需要根据面板中的 UC 更改 MainForm 上的窗口大小。我该怎么做呢?

我想在 MainForm 中创建一个 public 方法,然后在加载时在不同的 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 中,您可以订阅活动并在适当的时候更改面板内容和 window 大小。

public partial class MainForm : Form
{
    MyControl myControl;

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

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