簡體   English   中英

在設計時將控件添加到TabPage的標准方法是什么?

[英]What is the standard way to add controls to a TabPage at Design Time?

我正在創建要在Windows Mobile上部署的第一個Windows Forms應用程序,並且在設計選項卡式界面時遇到了一些麻煩。

我以為可以創建一個TabControl,然后添加一些TabPage,然后依次將Control拖到每個Tab頁上。 這似乎是不可能的,並且我在網上看到的大多數信息似乎都建議應在運行時動態添加控件。

我是否在這里遺漏了明顯的東西,或者這確實正確嗎?

如果必須在運行時添加控件,那么人們通常如何管理設計過程。 他們是否為每個選項卡創建一個自定義UserControl,然后在運行時添加它?

設計環境(C#Visual Studio 2005,.net 2.0)運行時環境(Windows Mobile 6.1)

更新1

在Visual Studio中采取的實際步驟如下:

  1. 選擇新建項目-> SmartDevice-> Windows Mobile 6 Professional->設備應用程序
  2. 向Form1添加一個TabControl。 這將自動添加tabPage1和tabPage2

更新2

解決這個問題的方法令人尷尬。 TabControl將選項卡放在頁面底部,我要做的第一件事是將選項卡控件的大小調整為一行,然后隱藏了TabPage控件。

目前,我不使用Windows Mobile,但我認為它的工作原理完全相同。

TabControl添加到窗體后,您應該查看屬性並搜索TabPages 在這里,您可以在控件中添加和刪除新的TabPage,並在設計器中根據需要進行設計。

關於在每個TabPage上使用UserControls的問題,我肯定會說 這樣可以更輕松地將每個頁面與每個頁面上發生的事情分開。

同樣在最后一步,我將需要的代碼從Designer.cs中移出到我自己的函數中(例如,其中設置了所有屬性的var tabControl = CreateTabControl() 。然后,我將所有UserControls放入

private IEnumerable<Type> GetAllTypes()
{
    yield return typeof(MyFirstControl);
    yield return typeof(MySecondControl);
}

然后做一個

private void CreateTabPages(TabControl tabControl, IEnumerable<Type> types)
{
    foreach(var type in types)
    {
        var control = Activator.CreateInstance(type);
        var tabPage = new TabPage();
        tabPage.Controls.Add(control);
        tabControl.TabPages.Add(tabPage);
    }
}

這將被稱為

CreateTabPages(tabControl, GetAllTypes());

通過這種方法,我可以輕松地用一行代碼添加另一個選項卡頁,並在自己的范圍內進行設計。

我剛打開vs2008並創建了一個tabcontrol,然后在設計器中使用拖放功能在其中添加了控件,但沒有發現任何問題。

我使用的方法是為每個選項卡創建一個用戶控件,但是我將用戶控件添加到設計器的選項卡中。 (請注意,只有生成解決方案,用戶控件才會出現在工具箱中)。

我不知道為什么您的方法不起作用。 在嘗試添加控件之前,您是否停止了應用程序?

祝好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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