[英]Adding a twin tabPage to tabControl through a user command
我是C#的新手,可能會問一個非常簡單的問題,但是我無法在網絡上找到任何東西來提供幫助。
我有一個帶有TabPage的tabControl,其中包含一個TextBox對象; 調用事件“文本更改”時,此對象將執行父tabPage名稱的更改。
我鍵入“我更改的文字”的文本框具有一種用於管理更改tabPage名稱的方法:
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (this.textBox1.Text != "")
this.tabControl2.SelectedTab.Text = this.textBox1.Text;
else
this.tabControl2.SelectedTab.Text = "(no name)";
}
當前頁面菜單中包含一個添加新頁面的控件,當用戶單擊該頁面時,它將運行此方法:
private void addNewPageToolStripMenuItem_Click(object sender, EventArgs e)
{
int numPagine;
string strPagine;
numPagine = this.tabControl2.TabCount;
strPagine = numPagine.ToString();
this.tabControl2.TabPages.Add("new page" + strPagine);
}
...這是輸出,這是預期的,因為我只是想添加一個新的空tabPage:
因此,我的問題是:我如何才能使用戶單擊“添加新頁面”時,而不是創建一個空的新tabPage時,該程序而是在創建一個類似於第一個頁面的頁面(即,在同一頁面中包含一個文本框)哪個位置可以更改剛剛創建的父tabPage的文本?
這是一個例子。
//..
// create the new page
TabPage tpNew = new TabPage("new page..");
// add it to the tab
this.tabControl2.TabPages.Add(tpNew);
// create one labe with text and location like label1
Label lbl = new Label();
lbl.Text = label1.Text;
lbl.Location = label1.Location;
// create a new textbox..
TextBox tbx = new TextBox();
tbx.Location = textBox1.Location;
tpNew.Controls.Add(lbl);
tpNew.Controls.Add(tbx);
// add code to the new textbox via lambda code:
tbx.TextChanged += ( (sender2, evArgs) =>
{
if (tbx.Text != "")
this.tabControl2.SelectedTab.Text = tbx.Text;
else
this.tabControl2.SelectedTab.Text = "(no name)";
} );
對於更復雜的布局,您可能需要考慮創建用戶控件。您也可能希望使用此代碼創建第一頁。 當然,還有文本和位置的真實值!
要創建UserControl
請轉到項目標簽,然后右鍵單擊Add-UserControl-UserControl並將其命名為myTagPageUC。 然后,您可以像在表單上一樣對其進行布局。 一個很好的例子就在MSDN上
問題在於,它與表單沒有任何聯系,這意味着您必須編碼各種引用才能使其正常工作。
我不確定是否編寫一個完整的clonePage方法可能更好。 它可以像上面的代碼一樣工作,但是會在模板頁面的控件上循環並檢查各種類型以添加正確的控件。
它實際上取決於更復雜的內容:布局或頁面與表單及其其他控件之間的聯系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.