在C#中,子窗口可以是模態(tài)(Modal)或非模態(tài)(Non-Modal)
模態(tài)子窗口會(huì)阻止用戶(hù)與主窗口進(jìn)行交互,直到子窗口關(guān)閉。要?jiǎng)?chuàng)建模態(tài)子窗口,請(qǐng)使用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); // 顯示模態(tài)子窗口
}
}
}
非模態(tài)子窗口允許用戶(hù)在子窗口打開(kāi)時(shí)與主窗口進(jìn)行交互。要?jiǎng)?chuàng)建非模態(tài)子窗口,請(qǐng)使用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); // 顯示非模態(tài)子窗口
}
}
}
這兩種方法都可以在子窗口的構(gòu)造函數(shù)中傳遞一個(gè)IWin32Window
對(duì)象,該對(duì)象表示子窗口的所有者。這樣,子窗口將始終位于其所有者窗口的前面。