【发布时间】:2022-01-10 07:24:19
【问题描述】:
我正在开发一个 C# windows 窗体应用程序交易卡游戏集合管理器
我有一个 Card 类,我正在尝试创建一个 Card 对象数组来表示集合中的每张卡片。从那里,我希望能够在表单文本框、标签、图片框等上搜索和显示卡片详细信息。
我尝试将数组放在不同类的内部和外部的 form1.cs 和 program.cs 中。数组似乎在 click 事件处理程序范围内的唯一位置是在其中声明它时。
我在哪里可以初始化这个数组,以便在整个程序和表单事件处理程序的范围内访问它?我对使用 Windows 窗体进行面向对象编程非常陌生
Card 类的构造函数接受一个 int 参数并初始化“收集器编号”
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
const int NumberOfCardsInSet = 3;
Card[] Set = new Card[NumberOfCardsInSet];
for (int iii = 0; iii < NumberOfCardsInSet; iii++)
{ Set[iii] = new Card(iii + 1); }
}
}
Card 的构造函数接受一个 int 参数来设置集合数。在此之后,卡片对象可以访问,我可以设置它们的字段..但是在这里:
private void button1_Click(object sender, EventArgs e)
{
//test button
DisplayCard(Set[0]); //error: name "set" doesnt exist in current context
}
public void DisplayCard(Card selectedCard)
{
myDCollectorNoTB.Text = selectedCard.CollectorNum.ToString();
myDNameTB.Text = selectedCard.Name.ToString();
myDRarityTB.Text = selectedCard.CardRarity.ToString();
myDCostTB.Text = selectedCard.Cost.ToString();
}
【问题讨论】:
-
把它放在表单类中应该没问题。如果这对您不起作用,请在问题中引用课程的相关部分。
-
是
set还是Set? C# 是区分大小写的语言。 -
对不起,即使使用“设置”也显示错误,当我试图最小化相关代码时,大小写不匹配已完成。即使大小写正确,我也会遇到此错误
-
如您所见,
set在到达按钮单击事件时是未知的。您需要“定义”set“外部”Form1的构造函数。在 Form1 的构造函数中,您将“初始化”set。所以……放……Card[] set;……就在上面……public Form1()……并将构造函数行更改为……set = new Card[NumberOfCardsInSet];…… -
谢谢 JohnG,成功了
标签: c# arrays windows-forms-designer