我已经接近为我一直在努力的练习项目准备好核心功能,但不足为奇的是我已经陷入困境并可以使用一些帮助或指针。
基本上,我正在向User控件发送一个对象,用户控件通过使用对象的内容将其发送到另一个用户控件,然后从第一个用户控件将第二个用户控件添加到第一个用户控制。或者至少我会,如果我没有得到有关对象引用的错误。这是Form1中的 HandGUI.CreateCard(newCard); 行,它给出了对象引用错误。如果我使CreateCard静态,它可以工作,但我不能使用this关键字将控件放在User Control1中。
在Form1中:
public void button2_Click(object sender, EventArgs e)
{
Card newCard = TheDeck.Draw();
HandGUI.CreateCard(newCard);
}
在用户控件1中:
public void CreateCard(Card card)
{
CardGUI cardGui = new CardGUI(card);
cardGui.Size = new Size(71, 96);
cardGui.Location = new Point(50, 50);
cardGui.Show();
this.Controls.Add(cardGui);
}
在User Control2中:
public CardGUI(CardGameLibrary.Card newCard)
{
InitializeComponent();
InitializeGUI();
AssignImage(newCard);
}
private void AssignImage(Card card)
{
string faceVal = card.FaceVal.ToString();
string suit = card.Suit.ToString();
string fullName;
if (faceVal == "Ace")
faceVal = "1";
if (faceVal == "Two")
faceVal = "2";
if (faceVal == "Three")
faceVal = "3";
if (faceVal == "Four")
faceVal = "4";
if (faceVal == "Five")
faceVal = "5";
if (faceVal == "Six")
faceVal = "6";
if (faceVal == "Seven")
faceVal = "7";
if (faceVal == "Eight")
faceVal = "8";
if (faceVal == "Nine")
faceVal = "9";
if (faceVal == "Ten")
faceVal = "10";
if (faceVal == "Jack")
faceVal = "j";
if (faceVal == "Queen")
faceVal = "q";
if (faceVal == "King")
faceVal = "k";
fullName = suit + faceVal;
if(cardList.Images[fullName] != null)
{
PictureBox picBox = new PictureBox();
picBox.Image = cardList.Images[fullName];
picBox.Size = new Size(71, 96);
this.Controls.Add(picBox);
}
}
最后在User Control2中创建一个表单,并将图片框添加到该表单中,这表明它至少可以找到合适的图片。希望有人知道我能做些什么,非常感谢任何帮助。
答案 0 :(得分:0)
看起来你正在使用HandGUI类,而不是实例。如果您没有初始化HandGUI对象,则会看到函数调用的空引用异常。如果将函数设置为static,则不会再出现错误,因为静态意味着可以在不初始化包含的类的情况下调用函数。
HandGUI newHandGUI = new HandGUI();
newHandGUI.CreateCard(newCard);