可以将表单从一个容器移动到另一个容器?怎么样?

时间:2015-02-06 01:41:57

标签: c# forms

设置信息:

我有一张表格

Insurance insuranceForm = new Insurance();

并将此表单添加到tabControl_insurance

tabControl_insurance.SelectedTab.Controls.Add(insuranceForm);

tabControl_insurance中随时可以有0到8个选项卡(在运行时控制)。

我想做什么:

我想将insuranceForm移动到当前选择的任何标签(如果有的话),而不是保险单的0到8份[略有变化]。这可能吗?

据我所知,首次通过Controls.Add()创建表单时会设置表单Container。表单的Container()无法重新设置。

三江源

2 个答案:

答案 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();
    }
希望它有所帮助。