c# winform 加载时候创建20个groupBox要求可以鼠标随意更改groupBox位置怎么写代码
你可以通过以下代码实现在C# WinForms中加载时创建20个GroupBox,并允许鼠标随意更改GroupBox的位置:
- 首先,在你的窗体上添加一个Panel控件,用于容纳所有的GroupBox。
- 在窗体的Load事件中,使用一个循环创建20个GroupBox,并将它们添加到Panel控件中。
- 为每个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,并且你可以使用鼠标拖动它们到任意位置
原文地址: https://www.cveoy.top/t/topic/iQDM 著作权归作者所有。请勿转载和采集!