2010-03-24 43 views
5

我正在構建一個小的選項卡式c#表單,我希望每個選項卡頁都具有一些常見功能,特別是一個OK按鈕和一個錯誤消息,併爲特定的空間表單域。在C#中創建一個自定義的TabPage控件

有沒有其他人做過類似的事情,你是如何接近它的?

+0

每個頁面上的確定按鈕? – 2010-03-24 15:30:58

+1

不正確的答案,但我想我會做一些測試,擴大原來的tabcontrolpage,添加您需要的常見功能 – michele 2010-03-24 15:32:47

回答

7

這很容易做到而不擴展TabControl/TabPage。

定義一個UserControl,並在每個TabPage上放置所需的常用元素。

在窗體上:繼續併爲每個TabPage設計TabPage特定的控件:確保一旦UserControl添加完成後,它們不會與公共控件重疊。

在主窗體的窗體的Load事件做這樣的事情:

// form scoped variable to hold a referece to the current UserControl 
    private UserControl1 currentUserControl; 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     foreach(TabPage theTabPage in tabControl1.TabPages) 
     { 
      currentUserControl = new UserControl1(); 

      theTabPage.Margin = new Padding(0); 
      theTabPage.Padding = new Padding(0); 

      theTabPage.Controls.Add(currentUserControl); 

      currentUserControl.Location = new Point(0,0); 

      currentUserControl.Dock = DockStyle.Fill; 

      currentUserControl.SendToBack(); 
     } 
    } 

即使「SendToBack是不是真的在這裏需要的是‘保險’,你的用戶控件與」好吧按鈕,用於錯誤消息的TextBox放置在您分配給每個TabPage的單個控件後面。

+1

那些倒票的人:理解爲什麼不喜歡這個解決方案將非常感激。謝謝, – BillW 2010-03-25 14:41:31

+0

@ BillW其實,一些屁股標記爲垃圾郵件。現在,我不知道這是一個好的答案,但我知道它不是垃圾郵件。所以,+1可以幫助彌補代表損失並中和你的答案等級。 – 2010-03-25 18:45:10

+0

嗨BillW, 我喜歡這個解決方案。我知道這意味着我失去了「看到」控制的設計師支持,但我認爲它很好地完成了這項工作,謝謝。 – 2010-03-25 23:45:55

2

幾個思路:

  • 保持一個tabpanel外共同控制;
  • 擴展TabPage/TabControl
  • 使用常用按鈕創建一個基本的UserControl並使其繼承自usercontrols。然後爲每個TabPage放置一個繼承的用戶控件。
相關問題