开发者

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>

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜