c# - 访问 Winform 控件的特定实例

标签 c# winforms visual-studio picturebox visual-c#-express-2010

在我编写的这个程序中,我使用一个函数来创建 PictureBox 的多个实例。这是代码:

public void serverCard()
{
    //Definitions
    PictureBox cardBack = new PictureBox();

    //Specifics for card
    cardBack.Size = new Size(cardSizeX, cardSizeY);
    cardBack.BackColor = Color.White;
    cardBack.Left = startX;
    cardBack.Top = startY;

    serverArea.Controls.Add(cardBack);

    //differences in pos
    startX += cardBack.Width + 5;
    if (startX > this.Width - cardSizeX)
    {
      startY += cardBack.Height + 5;
      startX = 5;
    }
}

我将如何访问 PictureBox 的特定实例。 例如:我使用此函数创建了 5 个名为“cardBack”的图片框。我想更改创建的第二个图片框的位置,我该怎么做。

最佳答案

1) 你可以给每个 PictureBox不同的名称(可能是 "cardBack" + ID_in_int )

int picBox_ID = 1;
public void serverCard()
{
    PictureBox cardBack = new PictureBox();
    cardBack.Name = "cardBack" + picBox_ID;
    picBox_ID++;

并将它们从 Controls 中拉出来按名称:

PictureBox temp = serverArea.Controls.OfType<PictureBox>().FirstOrDefault(x=>x.Name == "cardBack2");

2) 或者你可以有一个单独的类型集合:List<PictureBox>您将在哪里额外存储它们

List<PictureBox> picCollection = new List<PictureBox>();
public void serverCard()
{
    PictureBox cardBack = new PictureBox();
    picCollection.Add(cardBack);

并以您想要的方式访问它们。可能对订单感兴趣。

3) 另一种可能性是创建一个新类,该类的属性类型为 PictureBox和另一个属性int ID .你可以有一个充满这些对象的集合,每个对象可以有一个唯一的 ID 和相应的 PictureBox .您仍然可以将图片框放入 Controls并根据您的需要过滤集合。

关于c# - 访问 Winform 控件的特定实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45418086/

相关文章:

windows - 在 Windows 中编程的编码配色方案,而不仅仅是 Visual Studio

c# - CollectionEditor 的父级

c# - 从c#中的字符串中拆分数字

c# - Javascript 中的日期选择器和时间选择器条件

c# - 如何将List中的数据插入到ListBox中?

c++ - list 正在选择预定义的 redist

c# - 多态,调用父类的子方法

c# - 解密过程中 Winforms 数据 GridView 滞后

c# - 使用 STA 时表单表现异常,线程耗时过长

c# - 为什么 Application.Resources 中的 ResourceDictionary 需要 x :Key