【问题标题】:Dynamically added winforms control Not displaying?动态添加winforms控件不显示?
【发布时间】:2015-11-28 06:09:26
【问题描述】:

我有这个自定义控件,它基本上是一个面板:

class ResultPanel : Panel {
    Label scoreValueLabel = new Label();

    public ResultPanel() : base(){
        scoreValueLabel.AutoSize = true;
        scoreValueLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
        scoreValueLabel.Location = new System.Drawing.Point(265, 99);
        scoreValueLabel.Name = "scoreValueLabel";
        scoreValueLabel.Size = new System.Drawing.Size(49, 25);
        scoreValueLabel.TabIndex = 10;
        scoreValueLabel.Text = "+10";
        Controls.Add(scoreValueLabel);
    }
}

我正在尝试将它添加到事件处理程序的面板中:

private void ResultsReceivedHandler(object sender, List<QuestionResult> results) {

        ResultPanel resultPanel = new ResultPanel();
        allResultsPanel.Controls.Add(new ResultPanel());
        resultPanel.Anchor = ((AnchorStyles.Top | AnchorStyles.Left) | AnchorStyles.Right);
        resultPanel.BorderStyle = BorderStyle.FixedSingle;
        resultPanel.Location = new Point(0, 155);
        resultPanel.Name = "questionResultPanel";
        resultPanel.Size = new Size(325, 148);
        resultPanel.TabIndex = 0;

    }

我知道 ResultPanel 的一个实例可以显示在 allResultsPanel 中,因为我已经添加(使用设计器视图)一个 ResultPanel 到 allResultsPanel,它的大小与 allResultsPanel 顶部的这个相同并显示。

allResultsPanel 只是一个普通的 Panel 顺便说一句,它的高度足以容纳控件,因为它的高度是 800。

那么为什么我可以看到通过设计视图添加的控件,但没有看到动态添加的控件?

【问题讨论】:

  • 您正在添加一个ResultPanel 并配置另一个,您的意思是allResultsPanel.Controls.Add(resultPanel); 吗?
  • @Lasse V. Karlsen,谢谢,你为什么不把这个作为答案?
  • 在移动设备上,Reza 现在发布了,所以不需要。
  • @LasseV.Karlsen 感谢您的反馈 :)

标签: c# winforms


【解决方案1】:

在设置resultPanel时:

ResultPanel resultPanel = new ResultPanel();
resultPanel.Anchor = ((AnchorStyles.Top | AnchorStyles.Left) | AnchorStyles.Right);
resultPanel.BorderStyle = BorderStyle.FixedSingle;
resultPanel.Location = new Point(0, 155);
resultPanel.Name = "questionResultPanel";
resultPanel.Size = new Size(325, 148);
resultPanel.TabIndex = 0;

您正在向allResultsPanel 添加另一个新面板

allResultsPanel.Controls.Add(new ResultPanel());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多