我有一个从数据库中读取的应用程序。对于数据库中的每个元组,我的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”; 然后我把它添加到选项卡中,当我这样做时,所有的面板再次消失了
解决方案 问题是我正在引用标签页名称,当我使用索引位置时它正常工作并且我的面板现在正在显示
答案 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);
}