I create an application named WindowsFormsApp1 and I write code like this, I can create an unique tab page
namespace WindowsFormsApp1
{
public partial class Form1 : DevExpress.XtraBars.Ribbon.RibbonForm
{
public Form1()
{
InitializeComponent();
}
private void addTab(XtraTabControl tabControl, string tabName, string tabText)
{
int pageCount = tabControl.TabPages.Count;
int index = 0;
for(int i=0; i<pageCount; i++)
{
if (tabControl.TabPages[i].Name == tabName)
{
index = i;
break;
}
}
// create new or selected tabpage
if(index > 0)
{
tabControl.SelectedTabPage = tabControl.TabPages[index];
}
else
{
XtraTabPage newPage = new XtraTabPage();
newPage.Text = tabText;
newPage.Name = tabName;
tabControl.TabPages.Add(newPage);
pageCount = tabControl.TabPages.Count;
tabControl.SelectedTabPage = tabControl.TabPages[pageCount-1];
}
}
private void barButtonItem2_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
addTab(xtraTabControl1, "Tab1", "Tab 1");
}
}
}
but when I move addTab funtion to other class
namespace WindowsFormsApp1.Classes
{
class XTabPage
{
// add tabpage to tabcontrol
public void add(XtraTabControl tabControl, string tabName, string tabText)
{
XtraTabPage page = this.findTabPageByName(tabControl, tabName);
// create new or selected tabpage
if (page != null)
{
tabControl.SelectedTabPage = page;
}
else
{
XtraTabPage newPage = new XtraTabPage();
newPage.Text = tabText;
newPage.Name = tabName;
tabControl.TabPages.Add(newPage);
int pageCount = tabControl.TabPages.Count;
tabControl.SelectedTabPage = tabControl.TabPages[pageCount - 1];
}
}
// find tabpage by name
public XtraTabPage findTabPageByName(XtraTabControl tabControl, string tabName)
{
XtraTabPage page = (XtraTabPage)(tabControl.TabPages.Where(p => p.Text == tabName).FirstOrDefault());
return page;
}
}
}
and import it to Form1
using WindowsFormsApp1.Classes;
namespace WindowsFormsApp1
{
public partial class Form1 : DevExpress.XtraBars.Ribbon.RibbonForm
{
public Form1()
{
InitializeComponent();
}
private void barButtonItem2_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
XTabPage xtp = new XTabPage();
xtp.add(xtraTabControl1, "Tab1", "Tab 1");
}
}
}
But I can create ifinite tab page named Tab1. What is different?