1. 程式人生 > >RibbonForm作為父窗體,同一子窗體只打開一次

RibbonForm作為父窗體,同一子窗體只打開一次

目標:將RibbonForm作為父窗體,通過自身的button單擊事件,開啟子窗體Form1和Form2,並限定子窗體只能開啟一次。

步驟:

1、在VS環境下,檔案-新建-專案-windows窗體應用程式,這樣預設就建立了一個winform應用程式(這時只包含Form1)。

2、右鍵點選解決方案(MDI_Form),選擇新增-新建項-Windows窗體,這時添加了一個窗體Form2(可以新增一些控制元件到Form1、Form2中,便於執行時觀察)。

3、再次右鍵點選解決方案(MDI_Form),選擇add devExpress Item----RibbonForn,命名為MainRibbonForm,修改其屬性IsMdiContainer = true,這樣就添加了一個RibbonForm(需提前安裝devExpress控制元件)。

4、修改開啟progress.cs檔案,修改Application.Run(...)為Application.Run(new MainRibbonForm());

5、回到MainRibbonForm設計頁面,從工具箱拖一個documentManager到窗體上,並新增兩個button,如下圖:


6、為兩個button新增單擊事件,並限定同一視窗只能開啟一次。MainRibbonForm.cs中程式碼如下:

namespace MDI_Form
{
    public partial class MainRibbonForm : DevExpress.XtraBars.Ribbon.RibbonForm
    {
        public MainRibbonForm()
        {
            InitializeComponent();
            MRF = this;
            MRF.IsMdiContainer = true;
        }
         public MainRibbonForm MRF;


        private void barButtonItem1_ItemClick(object sender, ItemClickEventArgs e)
        {
            ActivateOrAddForm("視窗1","MDI_Form.Form1");
        }
        private void barButtonItem2_ItemClick_1(object sender, ItemClickEventArgs e)
        {
            ActivateOrAddForm("視窗2", "MDI_Form.Form2");
        }
        private void ActivateOrAddForm(string caption,string ViewType)
        {
            foreach (Form subForm in MRF.MdiChildren)
            {
                if (subForm.Text==caption)
                {
                    subForm.Activate();
                    return;
                }
            }
            Form fm=(Form)Activator.CreateInstance(Type.GetType(ViewType));
            fm.MdiParent = MRF;
            fm.Text = caption;
            fm.Show();
        }      
    }
}

執行,OK