为什么我的所有控件都没有显示?

时间:2014-02-09 13:10:08

标签: c# .net winforms controls

我在控件显示方面遇到问题,因为我希望它们显示出来。我是一名初学程序员,在表单方面非常如此,所以任何帮助都会受到赞赏。

public void CreateCard(Card card)
{
    CardGUI topCard = new CardGUI(card);

    topCard.Location = new Point(50, 50);

    aPanel.Controls.Add(topCard);

    DrawPlacement(topCard);
}

public void DrawPlacement(CardGUI cardGui)
{
    cardGui.Location = new Point(a, b);

    a += 18; // Space the cards

    // Put the cards on a new line after half have been laid out.
    counter++;
    if (counter == 26)
    {
        a = 140;
        b = 130;
    }

    this.Update();
    aPanel.Controls.Add(cardGui);

    cardGui.BringToFront();
}

我的问题是,我希望添加到CreateCard面板中的控件以及DrawPlacement中添加的控件都显示出来。但CreateCard中的控件未按预期显示。如果我将注释发送到DrawPlacement,我确实会显示,所以我认为它与Location属性有关?

我尝试了各种各样的东西但到目前为止没有任何工作。

1 个答案:

答案 0 :(得分:1)

您在CardGUI中添加的DrawPlacement类型的对象与CreateCard中添加的对象相同,因此添加它不会做任何事情。

如果你想在同一个位置使用相同对象的2倍,你应该创建另一个CardGUI,它看起来与DrawPlacement中的第一个完全相同,而不是操纵原始对象。

    public void CreateCard(Card card)
    {
        CardGUI topCard = new CardGUI(card);

        topCard.Location = new Point(50, 50);

        aPanel.Controls.Add(topCard);

        DrawPlacement(card);
    }

    public void DrawPlacement(Card card)
    {
        CardGUI cardGui = new CardGUI(card);
        cardGui.Location = new Point(a, b);

        a += 18; // Space the cards

        // Put the cards on a new line after half have been laid out.
        counter++;
        if (counter == 26)
        {
            a = 140;
            b = 130;
        }

        this.Update();
        aPanel.Controls.Add(cardGui);

        cardGui.BringToFront();
    }