在C#中,子窗口可以是模态(Modal)或非模态(Non-Modal)
模态子窗口会阻止用户与主窗口进行交互,直到子窗口关闭。要创建模态子窗口,请使用ShowDialog()
方法。例如:
using System;
using System.Windows.Forms;
namespace ModalExample
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private void buttonOpenChild_Click(object sender, EventArgs e)
{
ChildForm childForm = new ChildForm();
childForm.ShowDialog(this); // 显示模态子窗口
}
}
}
非模态子窗口允许用户在子窗口打开时与主窗口进行交互。要创建非模态子窗口,请使用Show()
方法。例如:
using System;
using System.Windows.Forms;
namespace NonModalExample
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private void buttonOpenChild_Click(object sender, EventArgs e)
{
ChildForm childForm = new ChildForm();
childForm.Show(this); // 显示非模态子窗口
}
}
}
这两种方法都可以在子窗口的构造函数中传递一个IWin32Window
对象,该对象表示子窗口的所有者。这样,子窗口将始终位于其所有者窗口的前面。