C# 事件,该事件将侦听表单中的任何标签单击
嗯,我在做一个基于标签的国际象棋游戏。我需要监听标签点击,所以当用户点击标签时,我得到他点击的标签的名称。我知道我可以为每个标签做这件事,但是否有一个通用事件可以帮助我在一个事件/循环中为所有标签做同样的事情?您可以使用 结构对标签进行分组,然后在该面板上调用所需的事件,以便在单击其中一个元素时触发该事件C# 事件,该事件将侦听表单中的任何标签单击,c#,onclick,label,C#,Onclick,Label,嗯,我在做一个基于标签的国际象棋游戏。我需要监听标签点击,所以当用户点击标签时,我得到他点击的标签的名称。我知道我可以为每个标签做这件事,但是否有一个通用事件可以帮助我在一个事件/循环中为所有标签做同样的事情?您可以使用 结构对标签进行分组,然后在该面板上调用所需的事件,以便在单击其中一个元素时触发该事件 另一个解决方案是用鼠标点击的坐标来识别标签(当然,所需的代码量取决于您放置它们的方式)。如注释中所述,您可以将一个事件分配给所有 List<Label> lbls = this.
另一个解决方案是用鼠标点击的坐标来识别标签(当然,所需的代码量取决于您放置它们的方式)。如注释中所述,您可以将一个事件分配给所有
List<Label> lbls = this.Controls.OfType<Label>().ToList();
foreach (var lbl in lbls)
{
lbl.Click += lbl_Click;
}
void lbl_Click(object sender, EventArgs e)
{
Label lbl = sender as Label;
MessageBox.Show(lbl.Name);
}
List lbls=this.Controls.OfType().ToList();
foreach(lbl中的变量lbl)
{
lbl.Click+=lbl\u Click;
}
无效lbl_单击(对象发送者,事件参数e)
{
标签lbl=发送者作为标签;
MessageBox.Show(lbl.Name);
}
您可以将这些方法分配给需要在VS表单设计器中管理的每个标签(您转到控件事件,在单击行选择列表中的方法,而不是双击):
如果您需要,可以添加光标更改以方便使用
如果要动态分配事件,可以使用@caner answer,并且可以将面板中的所有对象分组,以分析panel.Controls并分配事件。您可以创建一个从
标签继承的自定义标签类。然后,您可以订阅基类的单击事件并执行您的操作
public class MyLabel : Label
{
public MyLabel()
: base()
{
Click += ProcessClickEvent;
}
private void ProcessClickEvent(object sender, System.EventArgs e)
{
// Do what you want to do
}
}
假设您使用了64个标签
在windows窗体中,单击Label1的事件,您将编写以下代码:
对于其余63个标签,在设计视图中,使用Ctrl键-->转到属性窗口-->在事件选项下选择单击选项-->从下拉列表中选择“标签1\u单击”选项,选择所有63个标签
只需完成并运行应用程序。您可以在VS forms designer的属性中同时将一个事件分配给多个标签。您可以按代码解析控件(例如窗体或面板)的控件列表的标签,并为同一委托指定哪些标签。你想做什么?嗯,我的英语不是很好,但我会尽力解释的。我需要一个当用户单击任何标签时触发的事件,该事件将告诉我用户单击的标签的名称。
public class MyLabel : Label
{
public MyLabel()
: base()
{
Click += ProcessClickEvent;
}
private void ProcessClickEvent(object sender, System.EventArgs e)
{
// Do what you want to do
}
}
private void Label1_Click(object sender, EventArgs e)
{
var label = sender as Label;
MessageBox.Show(label.Name);
}