我想創建一個包含一些控件的TabPage的子類,並且我想通過設計器控制這些控件的佈局和屬性。但是,如果我在設計器中打開我的子類,我無法像在UserControl上那樣定位它們。我不想創建一個帶有UserControl實例的TabPage,我想直接設計TabPage。如何創建TabPage的子類,以便像UserControl一樣編輯?
我該怎麼做?我嘗試過更改Designer和DesignerCategory屬性,但我沒有找到任何有用的值。
我想創建一個包含一些控件的TabPage的子類,並且我想通過設計器控制這些控件的佈局和屬性。但是,如果我在設計器中打開我的子類,我無法像在UserControl上那樣定位它們。我不想創建一個帶有UserControl實例的TabPage,我想直接設計TabPage。如何創建TabPage的子類,以便像UserControl一樣編輯?
我該怎麼做?我嘗試過更改Designer和DesignerCategory屬性,但我沒有找到任何有用的值。
我以前有過類似的問題。
我做了第一次是從繼承用戶控件到標籤頁,像這樣
類的UserInterface開關:用戶控件//不要設計師位,然後將其更改爲
類的UserInterface:TabPage的
其次我只是把我的所有控件和用戶控件中的東西,並將它們停靠在一個tabpage中。
第三我做了一個通用類,它需要任何用戶控件並自動進行對接。
,所以你可以把你「的UserInterface」類只是得到一個類型,你可以添加到System.Windows.Forms.TabControl
public class UserTabControl<T> : TabPage
where T : UserControl, new()
{
private T _userControl;
public T UserControl
{
get{ return _userControl;}
set
{
_userControl = value;
OnUserControlChanged(EventArgs.Empty);
}
}
public event EventHandler UserControlChanged;
protected virtual void OnUserControlChanged(EventArgs e)
{
//add user control docked to tabpage
this.Controls.Clear();
UserControl.Dock = DockStyle.Fill;
this.Controls.Add(UserControl);
if (UserControlChanged != null)
{
UserControlChanged(this, e);
}
}
public UserTabControl() : this("UserTabControl")
{
}
public UserTabControl(string text)
: this(new T(),text)
{
}
public UserTabControl(T userControl)
: this(userControl, userControl.Name)
{
}
public UserTabControl(T userControl, string tabtext)
: base(tabtext)
{
InitializeComponent();
UserControl = userControl;
}
private void InitializeComponent()
{
this.SuspendLayout();
//
// UserTabControl
//
this.BackColor = System.Drawing.Color.Transparent;
this.Padding = new System.Windows.Forms.Padding(3);
this.UseVisualStyleBackColor = true;
this.ResumeLayout(false);
}
}
我處理這種通過設計自己的網頁作爲單獨的形式,然後在運行時將其託管在標籤頁內。
如何在TabPage
中放置表單?
form.TopLevel = false;
form.Parent = tabPage;
form.FormBorderStyle = FormBorderStyle.None; // otherwise you get a form with a
// title bar inside the tab page,
// which is a little odd
爲我工作!羞恥沒有人接受這個惡毒。 – dcg 2011-10-17 09:56:06
真正重要的部分是從TabPage更改爲UserControl。出於某種原因,如果Visual Studio從TabPage繼承,它將不會在設計器中顯示該控件。更改爲UserControl可立即解決此問題。現在它也出現在工具箱中。 – lanoxx 2011-11-15 01:20:17