如何使用任意名称动态创建对象?

时间:2011-02-17 22:56:26

标签: c# silverlight visual-studio-2010

所以这是我的情况。我正在设计一个程序,当用户单击某个Button时,需要在Canvas上实时创建新的Image对象。由于我不确切知道任何给定用户将创建多少个所述图像,因此我无法在代码中为每个用户分配名称。图像需要命名为“Image0”,“Image1”,“Image2”等,具体取决于页面上已存在的图像数量。有点像Visual Studio本身的工作方式,每次将控件放到设计视图上时,它会自动在控件的名称后附加一个数字。

有没有人有能够执行此功能的代码段?

2 个答案:

答案 0 :(得分:2)

您不必明确命名所有控件。只需将它们添加到画布“控件”列表中即可。

使用单个按钮和flowLayoutPanel创建一个Windows应用程序。

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!";
        }
    }
}

答案 1 :(得分:0)

我对你的问题没有直接的答案,但从它的声音来看,我可能是错的,因为我不知道你想要做什么,你是从新手看到的问题程序员的观点。您可能需要考虑使用某种集合(可能是列表)并动态添加图像对象。如果需要与每个对象关联的字符串名称,可以考虑类型为Dictionary<string,Image>

的字典