我应该在哪里放置一个数组,以便 windows 表单控件可以访问它?

Where do I put an array so that It is accessible to windows form controls?

我正在开发 C# windows 表单应用集换式纸牌游戏 collection 经理

我有一张卡片 class,我正在尝试创建一个卡片数组 object 来表示集合中的每张卡片。从那里,我希望能够在表单文本框、标签、图片框等上搜索和显示卡片详细信息

我试过将数组放在 form1.cs 和 program.cs 中,在不同的 class 内部和外部。数组似乎在单击事件处理程序范围内的唯一位置是在其中声明时。

我在哪里可以初始化这个数组,以便在整个程序和表单事件处理程序的范围内访问它?我对使用 windows 形式 object 的面向编程非常陌生

Card class 的构造函数采用一个 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 参数来设置集合数。在此之后,卡 object 可以访问,我可以设置它们的字段..但是在这里:

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();    
}

数组需要在class范围内声明(作为成员,就像构造函数或button1_Click和DisplayCard方法一样)。基于您的代码:

public partial class Form1 : Form
{
    private const int NumberOfCardsInSet = 3;
    private Card[] Set = new Card[NumberOfCardsInSet];

    public Form1()
    {
        InitializeComponent();
        
        for (var i = 0; i < NumberOfCardsInSet; ++i)
        { 
            Set[i] = new Card(i + 1); 
        }
    }

    //your button1_Click and DisplayCard methods go here

}