以编程方式添加到选项卡时,为什么我的控件不会显示

时间:2013-11-18 19:38:48

标签: c# winforms dynamic controls

我有一个从数据库中读取的应用程序。对于数据库中的每个元组,我的WinForm应用程序创建一个新面板,然后使用动态创建的标签填充各种信息。然后偏移该位置并创建下一个面板。我被告知我现在需要我的应用程序支持选项卡。每个选项卡只显示这么多面板。当我尝试将这些动态创建的面板添加到选项卡控件而不是this.control时,我的问题就出现了。当我这样做时,面板及其信息不再被绘制,我无法弄清楚如何制作面板。

private void Form1_Load(object sender, EventArgs e)
{

    panel = new Panel();
    panel.Location = position;
    panel.BorderStyle = BorderStyle.Fixed3D;
    panel.Width = 240;
    panel.Height = 210;

    company = new Label();
    company.Location = new Point(panel.Location.X + 10, panel.Location.Y + 10);
    company.Text = tempServer.Value.companyName;
    company.Font = new Font(company.Font.FontFamily, 12, FontStyle.Bold);

    tabs.TabPages["1"].Controls.Add(company);
            this.Controls.Add(panel);
    this.Controls.Add(tabs);
    this.Controls.SetChildIndex(tabs, this.Controls.Count);
}

更新 我决定尝试一下。我还原了由This.Controls.add(控件)添加的所有控件;所有面板再次显示在哪里。然后我创建了 标签someLabel = new Label(); someLabel.Text =“SomeText”;  然后我把它添加到选项卡中,当我这样做时,所有的面板再次消失了

解决方案 问题是我正在引用标签页名称,当我使用索引位置时它正常工作并且我的面板现在正在显示

1 个答案:

答案 0 :(得分:0)

假设Form的尺寸为Ok并且Form有一个名为“tabs”的选项卡控件,则以下代码应该可以工作:

private void Form1_Load(object sender, EventArgs e)
            {
                // create the panel
                var panel = new Panel();
                panel.Location = new Point(100, 100);
                panel.BorderStyle = BorderStyle.Fixed3D;
                panel.Width = 240;
                panel.Height = 210;

                // create a label
                var company = new Label();
                company.Location = new Point(panel.Location.X + 10, panel.Location.Y + 10);
                company.Text = "Company";

                // add the label into panel
                panel.Controls.Add(company);

                // add the panel into the first tab page of the tab control
                tabs.TabPages[0].Controls.Add(panel);
            }