winform全屏后获取新的panel大小并传给usercontrol?

Get the new size of panel and transfer to usercontrol after winform becomes fullscreen?

有什么方法可以在 FormWindowState.Maximized 之后检索面板的更新大小?我可以获得面板的大小,但它给出了面板的原始大小。

谢谢;

顺便说一句,这是用户控件的代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication8
{
    public partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();
        }

        private void UserControl1_Load(object sender, EventArgs e)
        {
            //this is the way i retrieve the panel size
            Form1 f = new Form1();
            this.Size = f.Size;
        }
    }
}

这是表单代码,面板有 4 个激活的锚点

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication8
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            UserControl1 n = new UserControl1();
            panel1.Controls.Add(n);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            WindowState = FormWindowState.Maximized;
        }
    }
}

如果您想在每次调整父窗体大小时调整用户控件的大小,您可以使用 ParentForm:

Resize 事件

主要形式:

using System;
using System.Drawing;
using System.Windows.Forms;

namespace ans
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            var uc = new UserControl2();
            uc.Location = new Point(0, 0);
            this.Controls.Add(uc);

            WindowState = FormWindowState.Maximized;
        }
    }
}

用户控制:

using System;
using System.Drawing;
using System.Windows.Forms;

namespace ans
{
    public partial class UserControl2 : UserControl
    {
        public UserControl2()
        {
            InitializeComponent();
        }

        private void UserControl2_Load(object sender, EventArgs e)
        {
            this.BackColor = Color.Aqua;
            if (this.ParentForm != null)
            {
                this.Size = this.ParentForm.Size;
                this.ParentForm.Resize += ParentForm_Resize;
            }
        }

        private void ParentForm_Resize(object sender, EventArgs e)
        {
            this.Size = ((Form)sender).Size;
        }
    }
}

如果您希望在运行时动态创建的 UserControl 随其所在的控件一起增长和收缩,请将 UserControl 的 Dock 属性 设置为在运行时填充:

private void button1_Click(object sender, EventArgs e)
{
    MyUserControl userControl = new MyUserControl();
    panel1.Controls.Add(userControl);
    userControl.Dock = DockStyle.Fill;
}