C#子窗口的模態(tài)與非模態(tài)設(shè)置方法

c#
小樊
85
2024-09-04 16:05:33

在C#中,子窗口可以是模態(tài)(Modal)或非模態(tài)(Non-Modal)

  1. 模態(tài)子窗口:

模態(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)子窗口
        }
    }
}
  1. 非模態(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ì)象表示子窗口的所有者。這樣,子窗口將始終位于其所有者窗口的前面。

0