2014-02-06 32 views
1

我正在開發一個C#中的窗體應用程序,它具有一個帶有動態創建的標籤頁的標籤控件。我想將相同的佈局和控件(組合框,文本框,按鈕& DataGridView)從ComboSet Item 1添加到新創建的標籤頁(在這種情況下爲ComboSet Item 2)。我該怎麼做,如何命名控件?如何將控件添加到動態創建的新標籤頁中?

enter image description here

新標籤將1,2,3... n產生。因此'n'個DataGridViews也將被添加到新標籤下。有沒有辦法綁定這些DataGridViews並且可以這樣做?

任何幫助將非常感謝!

回答

2

創建一個新的用戶控件 - >將所有控件放入用戶控件 - >爲所有控件創建屬性。那麼你只需要管理你的用戶控制。

void AddTab() 
{ 
    TabPage tbp = new TabPage(); 
    tbp.Name=TabControl1.TabPages.Count.ToString(); 
    MyUserControl cnt = new MyUserControl(); 
    cnt.Name="Cnt" + tbp.Name; 
    cnt.Dock=DockStyle.Fill; 
    tbp.Controls.Add(cnt); 
} 

如果你不能把你的代碼放到用戶控件,那麼你可以爲每個控件的事件。例如ProductName ComboBox的ProductName_SelectedValueChange,驗證爲折扣值並將其處理到AddTab()方法中。

+0

感謝您的回答。這解決了我的第一個問題。但我仍然有綁定DataGridView的問題。我唯一不明白的是當我創建自己的'UserControl'時,我必須爲所有ComboSet Items使用相同的控件名稱嗎?例如。如果我在新選項卡下爲不同的數據使用名爲'dgrdCS'的DataGridView,我該如何設法綁定它們?替換舊數據並綁定新數據? –

+0

你可以找到你的DataGridView控件爲 MyUserControl cnt =(MyUserControl)TabControl.TabPages [Index] .Controls [0]; cnt.grid.DataSouce = dtTable;網格將像屬性一樣執行,因此您不需要爲每個網格控件指定名稱。您可以通過名稱或索引管理您的選項卡。 – Shell

+0

我在用戶控件窗體中編寫DataGridView的代碼來綁定數據源。我將你的答案標記爲我的最終解決方案。謝謝你的幫助。 –

0

TabPages是普通容器,如面板。 您可以使用tabpage.controls.add()方法添加一些新項目。如果要命名項目,請使用myitem.Name = "Test"屬性。 如果您想在更多頁面上修復一組項目,您應該爲其創建一個Usercontrol。

+0

我可以使用'tabpage.Controls.Add()'方法添加新的標籤頁。但我遇到的問題是將控件放入標籤頁並命名它們。 –

+0

我試過這個tabPage1.Controls.Add(new TextBox());它的工作原理。確保你不要在tabcontrol上添加控件!你需要選擇頁面!在TabControl中,您只需添加新的Tabpages! ;) – Sebi

0

正如你想添加更多的控制到標籤頁,我建議爲tabe頁面中的內容創建一個自己的UserControl。

根據需要在UserControl中排列控件(DockStyle,Anchor ...)。

當您創建一個新選項卡時,只需創建一個新的UserControl並將其添加到Sebi所述的選項卡頁面中即可。另外你應該設置DockStyle爲Fill。這應該是個訣竅。

相關問題