【问题标题】:Creating an array of pictureboxes in windows form (C#)以 Windows 形式创建图片框数组(C#)
【发布时间】:2018-08-25 14:01:09
【问题描述】:

我正在尝试创建一个图片框对象的数组/列表,这些对象在按钮单击时被声明并添加到表单中(这意味着我没有用我的数组创建多个对象,但如果我能做到这一点,我会计划这样做跑步)。没有出现错误,但图片框本身不会出现在表单上。

private void spawn_Click(object sender, EventArgs e)
{
    var pictureTest[0] = new PictureBox();

    pictureTest[0].Image = Properties.Resources.testimage;
    pictureTest[0].Location = new Point(500, 250);
    pictureTest[0].Name = "spawn1";
    pictureTest[0].Size = new Size(50, 50);
    pictureTest[0].TabIndex = 98;
    pictureTest[0].TabStop = false;

    this.Controls.Add(pictureTest[0]);

}

在我的研究过程中,我主要只是得到了使用this.Controls.Add 的建议,但这似乎不是我的问题。我的数组之前声明过:

PictureBox[] pictureTest = new pictureTest[100];

【问题讨论】:

  • Visual Basic 与此有什么关系?你知道 VB 和 C# 不是一回事,对吧?
  • 呃,意思是visual studio,应该是windows窗体吧。现在有点乱,我看看我能不能弄清楚如何编辑
  • 如果你在spawn_Click 的第一行下一个断点,然后运行调试,断点会被命中吗?并检查窗口大小,可能是窗口大小
  • 确实如此,我记得之前尝试过,发现属性已通过监视窗口正确设置。
  • 表单大小为630、550,我设置图片框为500、250

标签: c# arrays winforms picturebox


【解决方案1】:

正如@HansPassant 在 cmets 中所说,此代码无法编译。以下内容应大致满足您的要求:

int _position = 10;

private void spawn_Click(object sender, EventArgs e)
{

    var pictureTest = new PictureBox();

    pictureTest.Image = Properties.Resources.testimage;
    pictureTest.Location = new Point(_position, 250);
    pictureTest.Name = "spawn1";
    pictureTest.Size = new Size(50, 50);
    pictureTest.TabIndex = 98;
    pictureTest.TabStop = false;

    this.Controls.Add(pictureTest);

    _position += 100;
}

首先,没有必要维护一个单独的PictureBox 数组,因为它们是您表单的一部分。其次,正如@HansPassant 所说 - 您将图像直接叠加在彼此之上,因此您无法判断您有 1 个还是 1000 个。

【讨论】:

    猜你喜欢
    • 2018-12-24
    • 2015-07-11
    • 2020-11-01
    • 1970-01-01
    • 2018-12-22
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    相关资源
    最近更新 更多