如何添加单击事件并将文本写入流程面板

时间:2015-12-28 10:13:42

标签: c# arrays events button click

我有这个创建按钮的方法:

        Button[] CreatingButtons(int n, List<string> names)
    {
        Button[] Buttons = new Button[n];
        int horizontal = 180; int vertical = 5;
        int Height = 33; int Width = 350 / Buttons.Length;
        for (int i = 0; i < Buttons.Length; i++)
        {
            Buttons[i] = new Button();
            Buttons[i].Height = Height;
            Buttons[i].Width = Width;
            this.Controls.Add(Buttons[i]);
            Buttons[i].Text = names[i];
            Buttons[i].TextAlign = ContentAlignment.MiddleCenter;
            Buttons[i].Location = new Point(horizontal, vertical);
            horizontal += Buttons[i].Width;
            Buttons[i].Click += (o, k) => 
            {

            };
        }
        return Buttons;
    }

正如您所见,click事件仍为空。我还有FlowDirectionPanel,称为textPanel

我需要点击事件才能在此面板中显示一些文字,还有一些图像会显示不同的内容。我怎样才能做到这一点 ?我之前从未使用过面板

2 个答案:

答案 0 :(得分:0)

您不清楚自己想要在面板中显示什么,但只需将TextBoxPictureBox放置在面板上并更改其TextImage属性。

List<string> textValues=new List<string> {"A","B",...}; //Add your different values to the list
List<Image> imgValues=new List<string> {image1,image2,...}; //Add your different images to the list

Buttons[i].Click += (o, k) => 
            {
              textBox1.Text= textValues[i];
              pictureBox1.Image= imgValues[i];
            };

答案 1 :(得分:0)

根据评论,您创建了四个不同的按钮阵列,因此最好使用类和属性而不是像

这样的按钮数组

你必须声明一个类

 internal class ButtonsDetails
    {
        public string Text { get; set; }
        public Image imgsource { get; set; }
    }

并且您的按钮生成方法应为

private static void GenerateButton(List<ButtonsDetails> details)
        {
            foreach (var item in details)
            {
                Button b = new Button();
                b.Click += (o, k) =>
                {
                    textBox1.Text = item.Text
                    pictureBox1.Image = item.imgsource
                };
            }
        }