【发布时间】:2020-06-17 16:56:34
【问题描述】:
我是 C# 的新手,我正在尝试在 WinForms 中创建一个 Hangman 游戏,我已经让游戏功能正常工作,但我正在尝试创建一个表单,用户选择一个类别,然后要猜测的单词来自所选类别。 我有一个 HangEventArgs,如下所示:
public class HangEventArgs : EventArgs
{
public Category WordCategory { get; set; }
}
还有一个数据类(我希望将来扩展它以添加更多功能)。
public enum Category
{
// Categories are stores here
}
public class HangData
{
public Category WordCategory { get; protected set; }
public HangData(Category askWhat)
{
WordCategory = askWhat;
}
}
还有一个存放单词的类
public static class WordsToGuess
{
public static string[] Capitals =
{
"London",
"Paris" // more words here
}; // more categories here
最后,我为所有类别创建了按钮单击事件,我创建了自己的按钮以不使用默认的 EventArgs。
private void bCategory_Click(object sender, HangEventArgs e)
{
MainGame mg = new MainGame(new HangData(e.WordCategory));
mg.ShowDialog();
}
我一直在尝试使用这样的事件处理程序
public event EventHandler<HangEventArgs>(object sender, HangEventArgs e);
但我不确定在我的代码中实现这一点的正确方法。 如果我使用
bCapitals.Click += new EventHandler(bCategory_Click);
我得到了一个没有重载匹配委托错误,我一直在想如何解决它。提前感谢您的帮助。
【问题讨论】:
-
您的 HangEventArgs 类是从 EventArgs 派生的吗?是否有特殊原因不能使用默认事件参数来单击按钮?
-
还有 bCapitals.Click += new EventHandler(bCategory_Click);应该是 bCategory.Click += new EventHandler(bCategory_Click);好像你可能绑定了错误的按钮
标签: c# winforms event-handling delegates