using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace 动态创建 { public partial class Form1 : Form { int iclick1 =-1; int iclick2 =-1; Button[] btns =new Button[16]; public Form1() { InitializeComponent(); } privatevoid Form1_Load(object sender, EventArgs e) { //自动创建
for (int i =0; i <16; i++) { btns[i] =new Button(); btns[i].Name = i.ToString();//加个名字方便集中操作 btns[i].Size =new Size(48, 48); int ix =20+60*(i%4); int iy =20+60*(i/4); btns[i].Location =new Point(ix, iy); this.Controls.Add(btns[i]); //绑定事件 btns[i].Click +=new System.EventHandler(this.btns_Click); btns[i].MouseHover+=new System.EventHandler(this.btns_MouseHover); btns[i].MouseLeave+=new System.EventHandler(this.btns_MouseLeave); } } //集中事件处理 privatevoid btns_Click(object sender, EventArgs e) { Button btn = (Button)sender; int index =int.Parse(btn.Name); if (index ==0|| index ==3|| index ==12|| index ==15) { //将上一个选择的按钮状态变为空 if (iclick1 !=-1) btns[iclick1].Text =""; if (iclick2 !=-1) btns[iclick2].Text =""; iclick1 = index; btn.BackColor = Color.Empty; btn.ForeColor = Color.Black; btn.Text ="1"; } if (index ==1|| index ==4) { if (iclick1 !=0) return; //将上一个选择的按钮状态变为空 if(iclick2 !=-1) btns[iclick2].Text =""; iclick2 = index; btn.BackColor = Color.Empty; btn.ForeColor = Color.Black; btn.Text ="2"; } if (index ==2|| index ==7) { if (iclick1 !=3) return; //将上一个选择的按钮状态变为空 if (iclick2 !=-1) btns[iclick2].Text =""; iclick2 = index; btn.BackColor = Color.Empty; btn.ForeColor = Color.Black; btn.Text ="2"; } if (index ==8|| index ==13) { if (iclick1 !=12) return; //将上一个选择的按钮状态变为空 if (iclick2 !=-1) btns[iclick2].Text =""; iclick2 = index; btn.BackColor = Color.Empty; btn.ForeColor = Color.Black; btn.Text ="2"; } if (index ==11|| index ==14) { if (iclick1 !=15) return; //将上一个选择的按钮状态变为空 if (iclick2 !=-1) btns[iclick2].Text =""; iclick2 = index; btn.BackColor = Color.Empty; btn.ForeColor = Color.Black; btn.Text ="2"; }
} privatevoid btns_MouseHover(object sender, EventArgs e) { Button btn = (Button)sender; int index =int.Parse(btn.Name); if (index == iclick1) return; //4 个角可能按出1 if (index ==0|| index ==3|| index ==12|| index ==15) { btn.BackColor = Color.Gray; btn.ForeColor = Color.White; btn.Text ="1"; } //4个角旁边可能按出2 if (index ==1|| index ==4) { if (iclick1 !=0) return; btn.BackColor = Color.Gray; btn.ForeColor = Color.White; btn.Text ="2"; } if (index ==2|| index ==7) { if (iclick1 !=3) return; btn.BackColor = Color.Gray; btn.ForeColor = Color.White; btn.Text ="2"; } if (index ==8|| index ==13) { if (iclick1 !=12) return; btn.BackColor = Color.Gray; btn.ForeColor = Color.White; btn.Text ="2"; } if (index ==11|| index ==14) { if (iclick1 !=15) return; btn.BackColor = Color.Gray; btn.ForeColor = Color.White; btn.Text ="2"; } } privatevoid btns_MouseLeave(object sender, EventArgs e) { Button btn = (Button)sender; int index =int.Parse(btn.Name); if (index == iclick1 || index == iclick2) return; btn.BackColor = Color.Empty; btn.ForeColor = Color.Black; btn.Text =""; } } }