【问题标题】:How do I dynamically evaluate an event?如何动态评估事件?
【发布时间】:2012-10-25 23:05:29
【问题描述】:

如果这在编程上下文中应该用不同的方式表达,请原谅我 - 除了我用来为我的问题命名的确切内容之外,我不知道要搜索什么。

上下文 - 我正在尝试构建一个包含 4x4 随机字母网格的单词搜索游戏。我目前正在使用 Label_Click 事件来更改包含给定字母的标签的背景颜色。未来还会有很多其他的操作(例如,评估一系列点击是否构成合法词),但我基本上被这个问题所困扰:

// pseudo-code

if (lblA1_wasClicked || lblB1_wasClicked || ... lblD4_wasClicked)
{ 
    whichever_wasClicked... //perform actions
}

也许我需要了解如何为这种情况创建事件处理程序?我从未创建过自定义事件处理程序,我只知道它们在理论上是什么。我有点卡住了,在这一点上很难知道要寻找什么来继续学习。我只知道危险,所以如果答案像我的问题一样直截了当,请放轻松。 :)

【问题讨论】:

标签: c# if-statement event-handling multiple-conditions


【解决方案1】:

如果您在 ui 中,您可以转到每个标签的属性并将其 Click 处理程序设置为相同的方法。所以如果你有一个带有这样签名的方法。

public void label_Click(object sender, EventArgs e)
{
}

然后将其分配给每个标签,然后使用它来处理每个标签。这是一个幼稚的例子,并且有更好的方法使用已建立的模式来创建 Windows 窗体应用程序。查看this question 或搜索 MVP 模式窗口表单以获取更多信息!

【讨论】:

  • 那么标签属性可以通过sender来引用吗?这就是那个论点的目的吗?我会在早上尝试这个,如果它符合我的想法,则标记为接受!
  • @armadadrive 是的,标签属性可以通过发件人对象进行寻址,但您需要将其转换为标签:var lbl = (Label)sender;
  • 这就像一个魅力!这正是我所需要的。还有@MarkHall,谢谢你的选角技巧。
猜你喜欢
  • 2010-09-05
  • 2017-10-14
  • 1970-01-01
  • 2021-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-03
相关资源
最近更新 更多