所以我有一个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();
}
答案 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
}
}