根据用户控件更改 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
}
}
所以我有一个主窗体,其中有一个面板。 为此,我创建了几个用户控件,我将根据不同按钮的请求将它们放入我的面板中。
我的问题是:我需要根据面板中的 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
}
}