此代码将帮助我生成此序列中的标签,例如
A1 A2 A3 A4 A5
B1 B2 B3 B4 B5
C1 C2 C3 C4 C5
D1 D2 D3 D4 D5
但现在我想要的是我可以点击标签,每个标签都有自己的ID并调用方法来检查是否可以免费使用。
所以我需要让它自动生成粗体部分
vartable[namelabel].Click += new System.EventHandler(**vartable[namelabel]_Click**);
namelabel与名称或
自动生成相同Private void lbl11_Click
我该怎么办?
private void button1_Click(object sender, EventArgs e)
{
for (int i = 1; i <= 9; i++)
{
for (int q = 1; q <= 9; q++)
{
string lettle="a";
if(i==1)
{
lettle="A";
}
else if(i==2)
{
lettle="B";
}
else if (i == 3)
{
lettle = "C";
}
else if (i == 4)
{
lettle = "D";
}
else if (i == 5)
{
lettle = "E";
}
else if (i == 6)
{
lettle = "F";
}
else if (i == 7)
{
lettle = "G";
}
else if (i == 8)
{
lettle = "H";
}
else if (i == 9)
{
lettle = "I";
}
string labeltext = lettle + q;
int y = (100 + (q * 20));
int x = (100 + (i * 20));
string namelabel = "lbl" + i + q;
var method = namelabel;
var vartable = new Dictionary<string, Label>();
vartable[namelabel] = new Label();
vartable[namelabel].AutoSize = true;
vartable[namelabel].Location = new System.Drawing.Point(y, x);
vartable[namelabel].Name = namelabel;
vartable[namelabel].Size = new System.Drawing.Size(35, 13);
vartable[namelabel].TabIndex = 1;
vartable[namelabel].Text = labeltext;
vartable[namelabel].Cursor = System.Windows.Forms.Cursors.Hand;
this.Controls.Add(vartable[namelabel]);
vartable[namelabel].Click += new System.EventHandler(**vartable[namelabel]_Click**);
}
}
答案 0 :(得分:0)
您可以使用Label的“Tag”属性(从基类Control继承)来存储座位号。这允许您对所有Label对象使用相同的事件处理程序。一旦调用了事件处理程序,它就可以通过检查Tag实际单击了哪个Label来确定。
预订/可用信息可以存储在由座位编号索引的布尔数组中。
示例事件处理程序:
private void label_Click(object sender, EventArgs e)
{
if (((Label)sender).Tag.Equals("1"))
{
MessageBox.Show("Label 1 clicked!");
}
}