无法将方法添加到按钮单击事件 C# UWP
Cannot add a method to a button click event C# UWP
我在运行 HangMan 游戏时遇到了一些问题。因为我得到了我的按钮,所以我不得不制作一种向用户显示字母表字母的方法。所以我有这种猜测方法,我想将其添加到按钮单击事件中。所以当我尝试向按钮添加方法时,我得到了这条红色的 squiqqly 线。错误在 HangMan_OnLoaded 方法中。谢谢!
public void DisplayTheWord()
{
WrongGuesses = 0;
BitmapImage Hangman2 = new BitmapImage();
Uri URL = new Uri(BaseUri, images[WrongGuesses]);
Hangman2.UriSource = URL;
picture.Source = Hangman2;
string[] ReadWords = File.ReadAllLines("EnglishWords.txt");
int NextNumber = (new Random().Next(words.Length));
copyCurrent = "";
current = words[NextNumber];
for (int i = 0; i < ReadWords[NextNumber].Length; i++)
{
copyCurrent += "_" + " ";
}
CopiedWord.Text = copyCurrent;
}
private void Hangman_OnLoaded()
{
const int btnSize = 35;
var c = 0;
for (var i = 65; i <= 90; i++)
{
var btn = new Button();
btn.Content = (char)i;
btn.Width = btn.Height = btnSize;
var margin = btn.Margin;
margin.Left = c += 37;
btn.Margin = margin;
GridMain.Children.Add(btn);
btn.Click += Guessing();
}
}
private void Guessing(object sender, EventArgs e)
{
for (var i = 65; i <= 90; i++)
{
var btn = new Button();
btn = sender as Button;
btn.Content = (char) i;
var choice = btn.ToString();
if (copyCurrent.Contains(choice))
{
char[] temp = copyCurrent.ToCharArray();
char[] find = current.ToCharArray();
char guessChar = choice.ElementAt(0);
for (int index = 0; index < find.Length; index++)
{
if (find[index]== guessChar)
{
temp[index] = guessChar;
}
}
copyCurrent = new string(temp);
}
else
{
WrongGuesses++;
}
if (WrongGuesses < 6)
{
}
}
}
private void DisplayCopy()
{
CopiedWord.Text = "";
for (int index = 0; index < copyCurrent.Length; index++)
{
CopiedWord.Text += copyCurrent.Substring(index, 1);
CopiedWord.Text += " ";
}
}
您需要删除行中的括号:
btn.Click += Guessing();
所以它变成:
btn.Click += Guessing;
我认为:
错误是因为 Guessing 是无效的并且 return 除了你正在使用 Guessing 就像一个方法 return 一个事件:
btn.Click += Guessing();
对于 dix return 一个价值事件:)
确保您的处理程序适合您要使用的事件:
private void Guessing(object sender, RoutedEventArgs e) {
//your handler code
}
btn.Click += Guessing;
原因是,每个事件都需要委托人签名并定义参数。
@swatsonpicken 说的对。您需要从行中删除括号:
btn.Click += Guessing();
并替换为:
btn.Click += Guessing;
您还需要更正一件事,那就是
private void Guessing(object sender, EventArgs e)
上面一行写成如下:
private void Guessing(object sender, RoutedEventArgs e)
希望这会有所帮助。 :)
我在运行 HangMan 游戏时遇到了一些问题。因为我得到了我的按钮,所以我不得不制作一种向用户显示字母表字母的方法。所以我有这种猜测方法,我想将其添加到按钮单击事件中。所以当我尝试向按钮添加方法时,我得到了这条红色的 squiqqly 线。错误在 HangMan_OnLoaded 方法中。谢谢!
public void DisplayTheWord()
{
WrongGuesses = 0;
BitmapImage Hangman2 = new BitmapImage();
Uri URL = new Uri(BaseUri, images[WrongGuesses]);
Hangman2.UriSource = URL;
picture.Source = Hangman2;
string[] ReadWords = File.ReadAllLines("EnglishWords.txt");
int NextNumber = (new Random().Next(words.Length));
copyCurrent = "";
current = words[NextNumber];
for (int i = 0; i < ReadWords[NextNumber].Length; i++)
{
copyCurrent += "_" + " ";
}
CopiedWord.Text = copyCurrent;
}
private void Hangman_OnLoaded()
{
const int btnSize = 35;
var c = 0;
for (var i = 65; i <= 90; i++)
{
var btn = new Button();
btn.Content = (char)i;
btn.Width = btn.Height = btnSize;
var margin = btn.Margin;
margin.Left = c += 37;
btn.Margin = margin;
GridMain.Children.Add(btn);
btn.Click += Guessing();
}
}
private void Guessing(object sender, EventArgs e)
{
for (var i = 65; i <= 90; i++)
{
var btn = new Button();
btn = sender as Button;
btn.Content = (char) i;
var choice = btn.ToString();
if (copyCurrent.Contains(choice))
{
char[] temp = copyCurrent.ToCharArray();
char[] find = current.ToCharArray();
char guessChar = choice.ElementAt(0);
for (int index = 0; index < find.Length; index++)
{
if (find[index]== guessChar)
{
temp[index] = guessChar;
}
}
copyCurrent = new string(temp);
}
else
{
WrongGuesses++;
}
if (WrongGuesses < 6)
{
}
}
}
private void DisplayCopy()
{
CopiedWord.Text = "";
for (int index = 0; index < copyCurrent.Length; index++)
{
CopiedWord.Text += copyCurrent.Substring(index, 1);
CopiedWord.Text += " ";
}
}
您需要删除行中的括号:
btn.Click += Guessing();
所以它变成:
btn.Click += Guessing;
我认为:
错误是因为 Guessing 是无效的并且 return 除了你正在使用 Guessing 就像一个方法 return 一个事件:
btn.Click += Guessing();
对于 dix return 一个价值事件:)
确保您的处理程序适合您要使用的事件:
private void Guessing(object sender, RoutedEventArgs e) {
//your handler code
}
btn.Click += Guessing;
原因是,每个事件都需要委托人签名并定义参数。
@swatsonpicken 说的对。您需要从行中删除括号:
btn.Click += Guessing();
并替换为:
btn.Click += Guessing;
您还需要更正一件事,那就是
private void Guessing(object sender, EventArgs e)
上面一行写成如下:
private void Guessing(object sender, RoutedEventArgs e)
希望这会有所帮助。 :)