c#中MDI子窗体怎么建
时间: 2024-02-24 22:59:27 浏览: 156
在 C# 中创建 MDI 子窗体的步骤如下:
1. 在窗体设计器中,打开主窗体,将其属性 IsMdiContainer 设置为 true,即将其设置为 MDI 容器窗体。
2. 在工具箱中,选择 Form 控件,将其拖入主窗体中,这将会创建一个新的子窗体。
3. 设置新创建的子窗体的属性,如 Text、Size、Location 等。
4. 在主窗体中,调用子窗体的 Show() 方法,即可将子窗体添加到 MDI 容器窗体中,并显示出来。
下面是一个示例代码:
```csharp
// 创建子窗体
Form childForm = new Form();
childForm.Text = "子窗体";
childForm.Size = new Size(400, 300);
childForm.Location = new Point(10, 10);
// 将子窗体添加到 MDI 容器窗体中,并显示出来
childForm.MdiParent = this; // this 表示当前窗体(即主窗体)
childForm.Show();
```
相关问题
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子窗体创建vs
在C#中,MDI(Multiple Document Interface,多文档界面)是指一个应用程序包含一个主窗口(通常是应用程序本身),可以同时显示多个子窗口(称为文档)。如果你想要在C#中创建MDI子窗体,你可以按照以下步骤操作:
1. **新建项目**:打开Visual Studio,选择“文件”->“新建”->“项目”,然后选择“Windows Forms App (.NET Framework)”或“.NET Core Windows Desktop”下的模板。
2. **添加MDI容器**:在生成的新项目中,你需要添加一个`Form`作为MDI容器,这通常是一个`MDIContainer`或者直接从`System.Windows.Forms.Form`派生的类,并设置其`MdiChildren`属性允许它承载其他窗体。
```csharp
public partial class MainForm : MDIContainer
{
public MainForm()
{
InitializeComponent();
// 其他初始化代码...
}
}
```
3. **创建子窗体**:右键点击MDI容器,选择“添加”->“窗体”,命名你所需的子窗体。子窗体需要继承自`Form`类。
4. **添加子窗体到MDI容器**:通过`Add()`方法将子窗体添加到MDI容器上,或者在运行时动态创建并显示子窗体。
```csharp
private void buttonNewDocument_Click(object sender, EventArgs e)
{
MyDocumentForm document = new MyDocumentForm();
this.MdiChildren.Add(document);
document.Show();
}
```
5. **处理事件**:MDI容器和其他子窗体可能会涉及到一些特定的事件,例如`ChildFormClosing`、`Activate`等,以便于管理子窗体的行为。
阅读全文