通過頁面名字呼叫頁面並新增到tab控制元件中
阿新 • • 發佈:2019-01-25
/// <summary>
/// 動態 顯示 tab
/// </summary>
/// <param name="sFromName">類名</param>
private void showTab(string sClassName, string MethodName, string sPRODUCTCOMPID)
{
string sFuncName = "showTab";
try
{
bool IsOpened = false;
string sSolutionName = Application.CompanyName;//名稱空間
//System.Reflection.Assembly ass = Assembly.Load(sSolutionName);
//System.Windows.Forms.Form form = (System.Windows.Forms.Form)ass.CreateInstance(sSolutionName + "." + sClassName);
// 1.Load(名稱空間名稱),GetType(名稱空間.類名)
Type type = Assembly.Load(sSolutionName).GetType(sSolutionName + "." + sClassName);
// 2.GetMethod(需要呼叫的方法名稱)
MethodInfo method = type.GetMethod(MethodName);
// 3.呼叫的例項化方法(非靜態方法)需要建立型別的一個例項
object obj = Activator.CreateInstance(type);
System.Windows.Forms.Form form = obj as System.Windows.Forms.Form;
//// 4.方法需要傳入的引數
//object[] parameters = new object[] { sPRODUCTCOMPID };
//// 5.呼叫方法,如果呼叫的是一個靜態方法,就不需要第3步(建立型別的例項)
//// 相應地呼叫靜態方法時,Invoke的第一個引數為null
//method.Invoke(obj, parameters);
#region
foreach (SuperTabItem item in superTabControl.Tabs)
{
//已開啟
if (item.Name == sClassName)
{
superTabControl.SelectedTab = item;
IsOpened = true;
break;
}
}
if (!IsOpened)
{
if (form != null)
{
form.TopLevel = false;//設定為非頂級控制元件 否則會報錯
SuperTabItem tab = superTabControl.CreateTab("tabText");// new SuperTabItem();
//TAB.ContainerControl = from;
tab.Name = sClassName;
tab.Text = form.Text;
tab.FixedTabSize = new Size(120, 0);
tab.AttachedControl.Controls.Add(form);
tab.CloseButtonVisible = true;
superTabControl.Tabs.Add(tab);
this.superTabControl.SelectedTab = tab;
form.FormBorderStyle = FormBorderStyle.None;
form.Visible = true;
form.WindowState = FormWindowState.Maximized;
form.Dock = DockStyle.Fill;
form.ShowInTaskbar = false;
form.Show();//必須寫在最後,不然顯示不了
}
}
#endregion
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}