在我编写的这个程序中,我使用一个函数来创建 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/