gpt4 book ai didi

C# 动态窗体帮助

转载 作者:太空宇宙 更新时间:2023-11-03 22:16:38 25 4
gpt4 key购买 nike

我正在尝试使用图片框在 C# 中制作一个 Tile-Map 编辑器(我能想到的将图 block 放入表单的最简单方法)

生成图片框的代码是:

public void Generate_Tiles(int width, int height)
{
for (int x = 0; x < width; x++)
{
for (int y = 0; y < height; y++)
{
System.Windows.Forms.PictureBox picturebox = new PictureBox();
picturebox.BackColor = SystemColors.ActiveCaption;
picturebox.Cursor = Cursors.Cross;
picturebox.Location = new System.Drawing.Point((x*32) + 4, (y*32) + 4);
picturebox.Name = x+y+"tile";
picturebox.Size = new System.Drawing.Size(32, 32);
picturebox.TabIndex = 0;
picturebox.TabStop = false;
picturebox.Click += new System.EventHandler(TileBox_Clicked));
map.Controls.Add(picturebox);
}
}
MessageBox.Show("Done");
}

这部分工作,只要我一次使用少量的图片框(8 x 8 似乎是它想要在相当长的时间内显示的最大值)

我想在用户单击指定的图片框时执行一些操作,这就是为什么我有一个 onclick 方法,这就是我遇到问题的地方,所有图片框都称为...图片框。据我所知,我无法判断用户点击了哪个图片框。

我可能需要重新制作动态表单的工作方式,因为我不能得到很多图片框,但我认为主要问题仍然存在,只要我希望它是动态的(我这样做), 并非所有的瓦片 map 都具有相同的大小。

我从来没有做过这样的事情,我一直在寻找覆盖 onclick 事件的方法......我找不到,而且我找不到一个好的最新的 tile-engine (除了 XNA,但我认为这对于一个简单的 tile-editor 来说有点过头了)

我可能会朝着与我需要做的相反的方向前进。

最佳答案

您的事件处理程序中的发送者将是被点击的 PictureBox

    void TileBox_Clicked(object sender, EventArgs e)
{
PictureBox pictureBox = sender as PictureBox;
if(pictureBox != null)
{
//do stuff with your pictureBox
}
}

关于C# 动态窗体帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4922818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com