在PictureBox数组中写入文本

ej8000

我尝试将0到11的文本放在12个具有球形图像的图片框上,但将所有文本都设为11。

如何获得0到11之间的文字?

这是我的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace wfballs2
{
    public partial class Form1 : Form
    {
        String s;
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            PictureBox[] Shapes = new PictureBox[12];
            for (int i = 0; i < 12; i++)
            {
                s = Convert.ToString(i);
                Shapes[i] = new PictureBox();
                Shapes[i].Name = "ball" + i.ToString();
                Shapes[i].Location = new Point(10 + 45 * i, 300);
                Shapes[i].Size = new Size(40, 40);
                Shapes[i].Image = Image.FromFile(@ "C:\Users\Eiko\Desktop\ball\ball.jpg");
                Shapes[i].SizeMode = PictureBoxSizeMode.CenterImage;
                Shapes[i].Visible = true;
                this.Controls.Add(Shapes[i]);
                Shapes[i].Paint += new PaintEventHandler((sender2, e2) =>
                {
                    e2.Graphics.DrawString(s, Font, Brushes.Black, 10, 13);
                });
            }
        }
    }
}
勒内

变量s是表单中的一个实例,因此它的值由表单和您创建的所有形状共享。

每次绘制您的形状之一时,此代码:

 e2.Graphics.DrawString(s, Font, Brushes.Black, 10, 13);

会跑。s是您Form的一个实例变量。它将显示所有形状的最后设置值。在您的情况下,这发生在for循环的最后一次迭代中,因此发生在11。

要解决此问题,您必须在匿名Convert.ToString(val)事件处理程序之前捕获局部变量中的循环变量,然后使用该局部变量在事件处理程序中执行操作,如下所示:

 var val = i; // capture variable
 Shapes[i].Paint += new PaintEventHandler((sender2, e2) =>
 {
         // use captured variable here
         e2.Graphics.DrawString(Convert.ToString(val), Font, Brushes.Black, 10, 13);
 });

这将生成带有基于的局部变量的字符串val

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在PictureBox数组中写入文本

来自分类Dev

如何在文本文件中写入数组的内容?

来自分类Dev

结构数组写入文本文件

来自分类Dev

将文本的写入与写入行写入 R 中的文件

来自分类Dev

如何以适当的格式在文本文件中写入两个numpy数组?

来自分类Dev

如何使用Printwriter将String数组写入Java中的文本文件?

来自分类Dev

从Java中的文本文档写入初始化的数组时发生NullPointerException

来自分类Dev

在perl中读取文本文件并写入二维数组?

来自分类Dev

在python中的数组中写入数组

来自分类Dev

C ++在函数中写入数组

来自分类Dev

将PictureBox数组添加到控件中

来自分类Dev

如何在(“”)中写入(“某些文本”)?

来自分类Dev

Python,在TXT文件中写入文本

来自分类Dev

将文本写入列中的文件

来自分类Dev

Godot:点击按钮以在标签中写入文本

来自分类Dev

Python:在文件中写入彩色文本

来自分类Dev

将文本写入TextView中的某些位置

来自分类Dev

在Matlab中写入文本文件

来自分类Dev

从MFC中的编辑控件写入文本

来自分类Dev

在Matlab中写入文本文件

来自分类Dev

在现有 PDF 文件中写入文本

来自分类Dev

在android中写入文本文件

来自分类Dev

从文本列表中写入 Excel 文件的列

来自分类Dev

Swift-将数组写入文本文件

来自分类Dev

格式化数组并写入文本文件

来自分类Dev

将多维数组写入文本文件文件

来自分类Dev

在Forth上将文本文件写入数组

来自分类Dev

将数组的内容写入文本文件

来自分类Dev

将文本数据写入边界之间的数组