2014-02-09 61 views
0

我有问题获取控件来显示,因为我想要它们。我是一名初学者程序员,当涉及到表单时,非常感谢。为什么我的所有控件都不显示?

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属性有关?

我已经试过各种东西,但到目前为止,什么也没有奏效。

+0

你在哪里定义a和b? – elyashiv

+0

它们是全球定义的。当我开始一个新的甲板(我认为)时更容易重置它们。 –

回答

1

您在DrawPlacement中添加的CardGUI类型的对象与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(); 
    } 
+0

没有卡应该在同一个位置。第一张牌应代表甲板,并应放置在CreateCard中面板左侧的位置。然后,尽管还没有适当地结合,卡片应该从甲板上被抽出并且被放置在甲板的右边,逐个地偏移(a + = 18),直到甲板是空的。这最后一部分正在工作,它显示了不能正常工作的“甲板”。 但我在什么地方现在你给我的变化得到了,我想我就可以得到它现在的工作,谢谢:) –

+0

我们在这里缺少一些代码,你应该表现出更多的你做了什么或解释你的问题更好。原创问题中的CreateCard方法创建**一个**卡片对象,并将其放置在'aPanel'下的某个位置,并且没有构建卡组的代码或将任何东西放置在另一个位置,而不是'a,b'你设置'50,50'是无用的,因为它稍后被替换) –

+0

你已经帮我解决了我目前的问题。但是第一个控制位置(50,50)代表甲板,只有顶牌需要被看到。这是我看不到的,我现在可以随着你的改变。我只需要一个控件,所以尽管我不确定它是否工作,但我还添加了aPanel.Controls.Remove(topCard),然后再添加一个控件。至少它没有给出错误。所以是的,在我原来的代码中50,50是无用的,这就是为什么我看不到控制。 –

相关问题