私は絵ボックスC#動的フォームヘルプ
画像を生成するコードを(私はフォームにタイルをスローするように考えることが最も簡単な方法)を使用してC#でのタイルマップエディタの何かを作るしようとしていますボックスは、次のとおりです。
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×8は、それが時間のまともな金額で表示させたいことを最大のようです)
ユーザーが指定した画像ボックスをクリックしたときに何らかのアクションを実行したいのですが、これが原因です私が問題に遭遇するところでは、すべての画像ボックスは...画像ボックスと呼ばれています。私が知る限り、ユーザーがクリックした画像ボックスを教えてくれる方法はありません。
私はおそらく動的フォームが動作する方法をリメイクする必要があります。なぜなら、非常に多くの画像ボックスを得ることができないからです。しかし、私はそれが動的になりたい限り、メインの問題はまだそこにあると思いますdo)、すべてのタイルマップが同じサイズになるわけではありません。
私はこのようなことは一度もしませんでしたが、私はonclickイベントをオーバーライドする方法を探しました。私は見つけられませんでした。使用するのに最新のタイルエンジンが見つかりませんでした(XNAを除いて、それは単純なタイルエディタでは少し上にあると思います)
私は何をする必要があるのでしょうか。
...完全性のために、そのステップの後でmullをチェックすることでキャスティングの動作を確認したいと思うかもしれません - あなたは誤って別のオブジェクトのClickイベントをそのメソッドに接続するかもしれません(ただし、 ;))... – ZombieSheep
@ ZombieSheep Yep; "完全性"のために編集されました;) –
> _>私は、送信者であるオブジェクトが特に必要とするオブジェクトを参照する場合、PictureBoxであるオブジェクトの名前が重要でないことを忘れていたと思います。私は思っています、送信者経由で1つのピクチャボックスを変更しようとすると、それらはすべて変更されていましたが、今私はそれについて考えて、彼らはすべてユニークなポインタを持っています... – RyanTimmons91