根据用户控制c#更改窗口大小

时间:2017-06-07 08:09:27

标签: c# user-controls size

所以我有一个MainForm,我有一个Panel。 为此我创建了几个UserControls,我将根据请求从不同的按钮放入我的面板。

我的问题是:我需要根据我在Panel中使用的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();
        }

1 个答案:

答案 0 :(得分:0)

在每个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
    }
}