/// <summary>
/// 动态添加tabpage
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ItemKuFangGuanLi_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
{
string name = e.Link.Caption;
//判断是否已创建过
foreach (XtraTabPage page in xtraTabControl1.TabPages)
{
if (page.Text == name)
{
xtraTabControl1.SelectedTabPage = page;//显示该页
return;
}
}
//增加tabpage
XtraTabPage xpage = new XtraTabPage();
xpage.Name = name;
xpage.Text = name;
//向xtraTabControl1中添加窗体
FrmKuFangGuanLi frm = new FrmKuFangGuanLi();
frm.Visible = true;
frm.Dock = DockStyle.Fill;
frm.FormBorderStyle = FormBorderStyle.None;
frm.TopLevel = false;//在这里一定要注意 负责是加载不出来的
xpage.Controls.Add(frm);//添加要增加的控件
xtraTabControl1.TabPages.Add(xpage);
xtraTabControl1.SelectedTabPage = xpage;//显示该页
}
public void OpenMdiFormToSuperTabControl(DevExpress.XtraTab.XtraTabControl NavTabControl, ModuleInfo mInfo)
{
string name = mInfo.CasesName;
//判断是否已创建过
foreach (DevExpress.XtraTab.XtraTabPage page in NavTabControl.TabPages)
{
if (page.Text == name)
{
NavTabControl.SelectedTabPage = page;//显示该页
return;
}
}
//增加tabpage
DevExpress.XtraTab.XtraTabPage xpage = new DevExpress.XtraTab.XtraTabPage();
xpage.Name = name;
xpage.Text = name;
//向xtraTabControl1中添加窗体
string assemblyPath = mInfo.Cases.Substring(0, mInfo.Cases.IndexOf(".dll"));
System.Reflection.Assembly assembly = System.Reflection.Assembly.LoadFile(Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + "\Plugin\"+assemblyPath + ".dll");
// 获取类型
string formClassName = mInfo.Cases.Substring(mInfo.Cases.IndexOf(".dll") + 5, mInfo.Cases.Length - (mInfo.Cases.IndexOf(".dll") + 5));
Type type = Type.GetType(formClassName);
var childForm = Activator.CreateInstance(type) as Form;
childForm.Tag = mInfo.CasesName; //tag属性要重新写一次,否则在第二次的时候取不到。原因还不清楚。有知道的望告知。
childForm.Visible = true;
childForm.Dock = DockStyle.Fill;
childForm.FormBorderStyle = FormBorderStyle.None;
childForm.TopLevel = false;//在这里一定要注意 负责是加载不出来的
xpage.Controls.Add(childForm);//添加要增加的控件
NavTabControl.TabPages.Add(xpage);
NavTabControl.SelectedTabPage = xpage;//显示该页
}
/// <summary>
/// 移除tabpage
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void xtraTabControl1_CloseButtonClick(object sender, EventArgs e)
{
DevExpress.XtraTab.ViewInfo.ClosePageButtonEventArgs eArg = (DevExpress.XtraTab.ViewInfo.ClosePageButtonEventArgs)e;
string name = eArg.Page.Text;//得到关闭的选项卡的text
foreach (XtraTabPage page in xtraTabControl1.TabPages)//遍历得到和关闭的选项卡一样的Text
{
if (page.Text == name)
{
xtraTabControl1.TabPages.Remove(page);
page.Dispose();
return;
}
}
}
private void barButtonItemClose_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (this.Parent!=null)
{
DevExpress.XtraTab.XtraTabControl tab = new DevExpress.XtraTab.XtraTabControl();
tab = (DevExpress.XtraTab.XtraTabControl)this.Parent.Parent;
DevExpress.XtraTab.XtraTabPage item = (DevExpress.XtraTab.XtraTabPage)this.Parent;
tab.TabPages.Remove(item);
item.Dispose();
}
}