您可以通过以下代码实现在C# WinForms中加载时创建20个GroupBox,并允许鼠标随意更改GroupBox的位置:\n\n1. 首先,在您的窗体上添加一个Panel控件,用于容纳所有的GroupBox。\n2. 在窗体的Load事件中,使用一个循环创建20个GroupBox,并将它们添加到Panel控件中。\n3. 为每个GroupBox的MouseDown、MouseMove和MouseUp事件添加相应的事件处理程序,以实现鼠标拖动和释放的功能。\n\n以下是示例代码:\n\ncsharp\nusing System;\nusing System.Drawing;\nusing System.Windows.Forms;\n\nnamespace WinFormsApp\n{\n public partial class MainForm : Form\n {\n private int groupBoxIndex = -1;\n private Point mouseDownLocation;\n\n public MainForm()\n {\n InitializeComponent();\n }\n\n private void MainForm_Load(object sender, EventArgs e)\n {\n for (int i = 0; i < 20; i++)\n {\n GroupBox groupBox = new GroupBox();\n groupBox.Text = $"GroupBox {i + 1}";\n groupBox.Location = new Point(10 + (i % 4) * 150, 10 + (i / 4) * 100);\n groupBox.Size = new Size(120, 80);\n groupBox.MouseDown += GroupBox_MouseDown;\n groupBox.MouseMove += GroupBox_MouseMove;\n groupBox.MouseUp += GroupBox_MouseUp;\n panel.Controls.Add(groupBox);\n }\n }\n\n private void GroupBox_MouseDown(object sender, MouseEventArgs e)\n {\n groupBoxIndex = panel.Controls.IndexOf(sender as GroupBox);\n mouseDownLocation = e.Location;\n }\n\n private void GroupBox_MouseMove(object sender, MouseEventArgs e)\n {\n if (groupBoxIndex != -1 && e.Button == MouseButtons.Left)\n {\n GroupBox groupBox = panel.Controls[groupBoxIndex] as GroupBox;\n Point location = groupBox.Location;\n location.Offset(e.Location.X - mouseDownLocation.X, e.Location.Y - mouseDownLocation.Y);\n groupBox.Location = location;\n }\n }\n\n private void GroupBox_MouseUp(object sender, MouseEventArgs e)\n {\n groupBoxIndex = -1;\n }\n }\n}\n\n\n请确保在窗体设计器中添加一个Panel控件,并将其命名为panel,以便与上述代码中的控件名称匹配。\n\n这样,当你运行应用程序时,将会创建20个GroupBox,并且你可以使用鼠标拖动它们到任意位置。


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

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