winform中 ControlAdded在哪里?
时间: 2024-01-26 19:04:26 浏览: 127
ControlAdded是WinForms中的一个事件,它是在添加控件到容器控件中时触发的事件。可以在容器控件的事件处理程序中添加ControlAdded事件,例如在Form的Load事件处理程序中,可以添加ControlAdded事件以便在每次添加控件时都能触发该事件。在事件处理程序中,可以编写适当的代码以响应ControlAdded事件。
相关问题
C#winform中MDI中的页面不允许移动且要求保留控制按钮
在 C# WinForm 中,禁止 MDI 子窗体移动并保留控制按钮,可以按照以下步骤进行操作:
1. 在 MDI 父窗体的 Load 事件中添加以下代码:
```csharp
foreach (Control ctl in this.Controls)
{
MdiClient client = ctl as MdiClient;
if (client != null)
{
client.BackColor = Color.White; // 设置 MDI 容器背景色
client.ControlAdded += new ControlEventHandler(child_ControlAdded); // 添加控件添加事件
}
}
```
2. 添加控件添加事件 child_ControlAdded:
```csharp
private void child_ControlAdded(object sender, ControlEventArgs e)
{
Form frm = e.Control as Form;
if (frm != null)
{
frm.MaximizeBox = false; // 禁用最大化按钮
frm.MinimizeBox = false; // 禁用最小化按钮
frm.StartPosition = FormStartPosition.CenterParent; // 设置子窗体居中显示
frm.FormBorderStyle = FormBorderStyle.FixedSingle; // 设置子窗体边框样式为固定
frm.FormClosed += new FormClosedEventHandler(child_FormClosed); // 添加窗口关闭事件
}
}
```
3. 添加窗口关闭事件 child_FormClosed:
```csharp
private void child_FormClosed(object sender, FormClosedEventArgs e)
{
this.LayoutMdi(MdiLayout.TileVertical); // 关闭子窗体后重新排列显示
}
```
这样设置后,所有的 MDI 子窗体都将禁止移动,并且最大化和最小化按钮也被禁用。同时,所有的 MDI 子窗体都将以固定的边框样式和居中的方式显示。
winform中我的控件panel是圆角,但是里面的控件还是直角,所以整个页面的边框还是直角,这该怎么办?
如果你的 Panel 控件是圆角的,但是里面的控件还是直角,可以通过在 Panel 控件的 Paint 事件中对其子控件进行裁剪的方式解决。
以下是一个示例代码:
```
private void panel1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
// 创建圆角矩形路径
GraphicsPath path = new GraphicsPath();
path.AddArc(0, 0, 20, 20, 180, 90);
path.AddArc(panel1.Width - 20, 0, 20, 20, 270, 90);
path.AddArc(panel1.Width - 20, panel1.Height - 20, 20, 20, 0, 90);
path.AddArc(0, panel1.Height - 20, 20, 20, 90, 90);
path.CloseFigure();
// 剪切子控件
e.Graphics.Clip = new Region(path);
// 填充 Panel 背景
e.Graphics.FillPath(new SolidBrush(panel1.BackColor), path);
}
private void panel1_ControlAdded(object sender, ControlEventArgs e)
{
// 重新绘制 Panel 边框
panel1.Invalidate();
}
```
在这个示例代码中,我们在 Panel 的 Paint 事件中创建了一个圆角矩形路径,并使用 Graphics 对象进行了填充。然后,我们对 Panel 的子控件进行裁剪,这样就能够保证子控件也是圆角的了。同时,我们还在 Panel 的 ControlAdded 事件中重新绘制了 Panel 的边框,以保证添加新控件时也能正确显示圆角效果。
阅读全文