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