.Net Winform按鈕事件註冊及回調

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GamePanel
{
	public class ClickEventHandler : EventArgs
	{
	    public int index = 0;
	    public string name = "";
	}
    public class GameData
    {
        public static List<string> ButtonContainer = new List<string> { "button1", "button2", "button3", "button4" };
    }
}


	public void Initialized()
        {
            foreach (Control item in this.panel1.Controls)
            {
                //Console.WriteLine(item.Name);
                if (item is Button)
                {
                    for (int i = 0; i < 4; i++)
                    {
                        if (item.Name.ToLower().Contains(GameData.ButtonContainer[i]))
                        {
                            buttons.Add(item as Button, i);
                            ClickEventHandler clickEvent = new ClickEventHandler();
                            clickEvent.index = i;
                            clickEvent.name = item.Name;
                            Console.WriteLine(i);

                            item.Click += new EventHandler((send, args) => {
                                mEventHandler(send, clickEvent);
                            });

                            item.MouseHover += new EventHandler ( (send, args) => { item.BackColor = Color.White; } );

                        }
                    }
                }
            }
			//初始化
            mEventHandler(new object(), new ClickEventHandler() { index = 0 });

            Update.Enabled = true;
            Update.Start();
        }
        
		//回調方法
        void mEventHandler(object sender, ClickEventHandler e)
        {
            textBox1.Text =  $"name: {e.name}  index: {e.index} ";

            foreach (KeyValuePair<Button, int> item in buttons)
            {
                if (e.index == item.Value)
                {
                    item.Key.Image = imageList1.Images[0];
                }
                else
                {
                    item.Key.Image = imageList1.Images[1];
                }
            }
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章