How to create objects dynamically with arbitrary names?
So here's my situation. I am designing a program that requires new Image objects to be created in real-time on a Canvas, when the user clicks a certain Button. Seeing as I don't know exactly how many of said Images any given user will create, I can't assign names in the code for each and every one of them. The Images need to be named "Image0", "Image1", "Image2", etc, d开发者_开发知识库epending on how many Images already exist on the page. Kinda like how Visual Studio itself works, where each time you drop a control onto the design view, it automatically appends a number to the name of the control.
Does anyone have a code snippet capable of performing this function?
You don't have to explicitly name all controls. Just add them to the canvas "controls" list.
Create a windows app with a single button and a flowLayoutPanel.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication6
{
public partial class Form1 : Form
{
int i = 1;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
var button = new Button { Text = string.Format("Button {0}", i) };
button.Click += new EventHandler(button_Click);
flowLayoutPanel1.Controls.Add(button);
i += 1;
}
void button_Click(object sender, EventArgs e)
{
Button button = (Button)sender;
button.Text = " clicked!";
}
}
}
I don't have a direct answer to your question, but from the sounds of it, and I could be wrong because I don't know what you're trying to do, you're viewing the problem from a newbie programmer perspective. You might want to consider using a collection of some kind (perhaps a list) and dynamically adding image objects to that. If you want a string name associated with each object, you could consider a dictionary of type Dictionary<string,Image>
精彩评论