你可以通过以下代码实现在C# WinForms中加载时创建20个GroupBox,并允许鼠标随意更改GroupBox的位置:

  1. 首先,在你的窗体上添加一个Panel控件,用于容纳所有的GroupBox。
  2. 在窗体的Load事件中,使用一个循环创建20个GroupBox,并将它们添加到Panel控件中。
  3. 为每个GroupBox的MouseDown、MouseMove和MouseUp事件添加相应的事件处理程序,以实现鼠标拖动和释放的功能。

以下是示例代码:

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

namespace WinFormsApp
{
    public partial class MainForm : Form
    {
        private int groupBoxIndex = -1;
        private Point mouseDownLocation;

        public MainForm()
        {
            InitializeComponent();
        }

        private void MainForm_Load(object sender, EventArgs e)
        {
            for (int i = 0; i < 20; i++)
            {
                GroupBox groupBox = new GroupBox();
                groupBox.Text = $"GroupBox {i + 1}";
                groupBox.Location = new Point(10 + (i % 4) * 150, 10 + (i / 4) * 100);
                groupBox.Size = new Size(120, 80);
                groupBox.MouseDown += GroupBox_MouseDown;
                groupBox.MouseMove += GroupBox_MouseMove;
                groupBox.MouseUp += GroupBox_MouseUp;
                panel.Controls.Add(groupBox);
            }
        }

        private void GroupBox_MouseDown(object sender, MouseEventArgs e)
        {
            groupBoxIndex = panel.Controls.IndexOf(sender as GroupBox);
            mouseDownLocation = e.Location;
        }

        private void GroupBox_MouseMove(object sender, MouseEventArgs e)
        {
            if (groupBoxIndex != -1 && e.Button == MouseButtons.Left)
            {
                GroupBox groupBox = panel.Controls[groupBoxIndex] as GroupBox;
                Point location = groupBox.Location;
                location.Offset(e.Location.X - mouseDownLocation.X, e.Location.Y - mouseDownLocation.Y);
                groupBox.Location = location;
            }
        }

        private void GroupBox_MouseUp(object sender, MouseEventArgs e)
        {
            groupBoxIndex = -1;
        }
    }
}

请确保在窗体设计器中添加一个Panel控件,并将其命名为panel,以便与上述代码中的控件名称匹配。

这样,当你运行应用程序时,将会创建20个GroupBox,并且你可以使用鼠标拖动它们到任意位置

c# winform 加载时候创建20个groupBox要求可以鼠标随意更改groupBox位置怎么写代码

原文地址: https://www.cveoy.top/t/topic/iQDM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录