Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 根据用户控件c更改窗口大小#_C#_User Controls_Size - Fatal编程技术网

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

C# 根据用户控件c更改窗口大小#,c#,user-controls,size,C#,User Controls,Size,我有一个主窗体,里面有一个面板。 为此,我创建了几个用户控件,根据不同按钮的请求,我将它们放在面板中 我的问题是:我需要根据面板中的UC更改MainForm上的窗口大小。我该怎么做 我想在MainForm中创建一个公共方法,然后在不同的UC-on-load中调用它,你觉得怎么样?给我你最好的解决方案。谢谢 编辑:如果这有任何帮助,这是在我的MainUC代码中引入其他UC以替换面板中的MainUC private void UC1Button_Click(object sender, EventA

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

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

我想在MainForm中创建一个公共方法,然后在不同的UC-on-load中调用它,你觉得怎么样?给我你最好的解决方案。谢谢

编辑:如果这有任何帮助,这是在我的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);
然后在
main表单中
可以订阅事件,并在适当的时候更改面板内容和窗口大小

public partial class MainForm : Form
{
    MyControl myControl;

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

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

你说它不起作用是什么意思?这只是一个指导准则。是的,我理解。我把你的部分代码改成了我应该做的。它不起作用。你想让我发布我所有的代码?看看这是否有道理。我知道它很乱,只是原始的复制粘贴。我没有费心删除你不需要的东西。很抱歉。请将登记的更改应用于您的代码:没有问题。如果答案符合你的需要,请考虑一下。