[英]Change window size depending on user control c#
所以我有一個MainForm,其中有一個面板。 為此,我創建了幾個UserControl,可以根據需要通過不同的按鈕將其放入面板中。
我的問題是:我需要根據我在面板中擁有的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();
}
在每個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
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.