设置信息:
我有一张表格
Insurance insuranceForm = new Insurance();
并将此表单添加到tabControl_insurance
tabControl_insurance.SelectedTab.Controls.Add(insuranceForm);
tabControl_insurance中随时可以有0到8个选项卡(在运行时控制)。
我想做什么:
我想将insuranceForm移动到当前选择的任何标签(如果有的话),而不是保险单的0到8份[略有变化]。这可能吗?
据我所知,首次通过Controls.Add()创建表单时会设置表单Container。表单的Container()无法重新设置。
三江源
答案 0 :(得分:1)
我认为您想要的是什么,请按照使用组件的示例以及如何添加/删除以在标签之间导航。
//Method Add Component (can be any)
Button button = new Button() { Location = new Point(12, 12) };
tabControl1.SelectedTab.Controls.Add(button);
//Method Remove Component (Can be any too)
var controls = tabControl1.SelectedTab.Controls.Cast<Control>().Where(x => x.GetType() == typeof(Button)).ToList();
foreach (var item in controls)
{
tabControl1.SelectedTab.Controls.Remove(item);
}
这样,您可以在运行时从选项卡添加或删除组件。
我希望它有所帮助
答案 1 :(得分:0)
是的,可以实例化您的课程&#39;保险&#39;公开并将TopLevel属性更改为&#39; false&#39;。并在任何你想要的地方添加该对象。通过 &#39; this.tabControl.TabPages [X] .Controls.Add(&#39; your_form&#39); 表格将移动到您想要的标签,而不会改变其状态。
示例代码:
Form2 f = new Form2();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
f = new Form2()
{
Top = 0,
Left = 0,
Width = 100,
Height = 100,
TopLevel = false
};
}
private void button1_Click(object sender, EventArgs e)
{
int x = int.Parse(this.textBox1.Text);
this.tabControl1.TabPages[x].Controls.Add(f);
f.Show();
this.tabControl1.Refresh();
}
希望它有所帮助。