簡體   English   中英

通過用戶命令將雙tabPage添加到tabControl

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM