В прошлом у меня была похожая проблема.
Сначала я переключился с наследования Usercontrol на вкладку, как показано ниже.
class UserInterface: UserControl // Сделайте дизайнерский бит, затем измените его на
Класс UserInterface: 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);
}
}