如何设置mdi的父窗体与子窗体
时间: 2023-08-01 16:13:25 浏览: 51
在使用MDI(多文档界面)模式时,需要设置父窗体和子窗体的关系,实现子窗体在父窗体中的显示。下面是设置MDI父窗体和子窗体的方法:
1. 设置父窗体
在父窗体的Form_Load事件中,设置IsMdiContainer属性为True,表示该窗体是一个MDI容器窗体。
```
private void Form1_Load(object sender, EventArgs e)
{
this.IsMdiContainer = true;
}
```
2. 设置子窗体
在子窗体的构造函数中,设置MdiParent属性为父窗体的实例,表示该子窗体属于父窗体的MDI子窗体。
```
public Form2()
{
InitializeComponent();
this.MdiParent = this.ParentForm;
}
```
需要注意的是,子窗体的MdiParent属性需要在子窗体显示之前设置。另外,一个父窗体可以拥有多个子窗体,可以通过在父窗体中调用子窗体的Show或ShowDialog方法来显示子窗体。
```
Form2 childForm = new Form2();
childForm.Show();
```
以上就是设置MDI父窗体和子窗体的方法,希望对你有所帮助。
相关问题
C#设置MDI子窗体不可移动
要设置 C# MDI 子窗体不可移动,可以使用以下代码:
```csharp
private void Form2_Load(object sender, EventArgs e)
{
this.ControlBox = false; // 隐藏控制按钮
this.FormBorderStyle = FormBorderStyle.None; // 设置无边框样式
}
private const int WM_NCLBUTTONDOWN = 0xA1;
private const int HT_CAPTION = 0x2;
[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();
private void Form2_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(this.Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}
}
```
这里的代码实现了两个功能:
1. 隐藏控制按钮,即最大化、最小化和关闭按钮。
2. 通过重写 Form 的 MouseDown 事件,实现鼠标拖拽窗口的功能。这里只实现了鼠标左键拖拽窗口的功能,右键和中键不会触发拖拽。
这样就可以实现 C# MDI 子窗体不可移动的效果了。
c#中MDI子窗体怎么建
在 C# 中,使用 MDI(Multiple Document Interface,多文档界面)可以在一个主窗体中打开多个子窗体,实现更好的用户界面交互和管理。要创建一个 MDI 窗体,可以按照以下步骤操作:
1. 创建一个主窗体,设置其 IsMdiContainer 属性为 true,即可将其设置为 MDI 容器窗体。
2. 在 MDI 容器窗体中添加子窗体控件。
3. 在需要打开子窗体的事件中,创建子窗体实例,并将其设置为 MDI 父窗体的子控件,显示子窗体。
下面是一个简单的示例代码:
```csharp
// 创建一个 MDI 容器窗体
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
this.IsMdiContainer = true;
}
// 在需要打开子窗体的事件中,创建子窗体实例并显示
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
ChildForm childForm = new ChildForm();
childForm.MdiParent = this;
childForm.Show();
}
}
// 创建一个子窗体
public partial class ChildForm : Form
{
public ChildForm()
{
InitializeComponent();
}
}
```
在该示例中,我们创建了一个名为 MainForm 的 MDI 容器窗体,在其菜单栏中添加了一个“Open”菜单项,点击该菜单项会创建一个名为 ChildForm 的子窗体并显示在 MainForm 中。