c#文本框问题,无法获取参数
这段代码似乎有些可疑,我不知道如何解决它 基本上,player.Name应该更改文本框中的参数并将其插入其中,但它似乎没有这样做。。。或者也许我查错了方向c#文本框问题,无法获取参数,c#,C#,这段代码似乎有些可疑,我不知道如何解决它 基本上,player.Name应该更改文本框中的参数并将其插入其中,但它似乎没有这样做。。。或者也许我查错了方向 private void textBox1_TextChanged(object sender, EventArgs e) { Player player = new Player(); player.Name = textBox1.Text; //Problematic lin
private void textBox1_TextChanged(object sender, EventArgs e)
{
Player player = new Player();
player.Name = textBox1.Text; //Problematic line
}
private void Button_Start_Click(object sender, EventArgs e)
{
Player player = new Player();
switch (player.Name.ToUpper())
{
case "N/A": Label_Question.Text = "Please set your name!"; break;
default: Label_Question.Hide(); goto QuizStart;
}
QuizStart:
{
}
}
问题是,您正在textchanged和button press事件上创建一个新的“Player”实例,这意味着button press中的Player始终为空 像这样的东西应该可以帮你解决问题:
Player player;
private void textBox1_TextChanged(object sender, EventArgs e)
{
player = new Player();
player.Name = textBox1.Text; //Problematic line
}
private void Button_Start_Click(object sender, EventArgs e)
{
switch (player.Name.ToUpper())
{
case "N/A":
Label_Question.Text = "Please set your name!";
return;
default:
Label_Question.Hide();
break;
}
}
或者为什么不一起跳过文本更改(除非您想在代码中执行此处未显示的其他操作):
编辑:更改了代码以摆脱讨厌的GOTO语句。我建议提取一个方法,而不是将所有内容塞进单个按钮\u Start\u单击
:
private Boolean IsPlayerValid(Player player) {
if (null == player)
return false;
if (String.Equals("N/A", player.Name, StringComparison.OrdinalIgnoreCase)) {
Label_Question.Text = "Please set your name!";
return false;
}
//TODO: you may want add up conditions here
return true;
}
private void Button_Start_Click(object sender, EventArgs e) {
Player player = new Player() {
player.Name = textBox1.Text // you may want this - assign a player's Name
};
if (!IsPlayerValid(player))
return;
Label_Question.Hide();
// Quiz Start
}
每次创建
Player
的新实例时,它将始终具有默认值。使其成为私人类成员。我没有提到无用的goto
或开关
/大小写
,它只是一个if
(顺便说一句,使用string.Equals()
)进行字符串比较。问题是你没有将播放器
实例设置为类范围,而是将方法/事件范围设置为类范围。另外,不要使用GOTO@AdrianoRepetti刚刚发布的帖子就是答案…你也可能不需要每次用户按下一个新的播放器key@FeDe只有几行,我认为这个问题在将来对任何人都没有帮助…我删除了goto(我的错,没有考虑太多,尽管它“没用”)。只是一个小问题,它崩溃了,并且我收到了此错误。quick.exe中发生了类型为“System.NullReferenceException”的未处理异常。其他信息:对象引用未设置为对象的实例。
private Boolean IsPlayerValid(Player player) {
if (null == player)
return false;
if (String.Equals("N/A", player.Name, StringComparison.OrdinalIgnoreCase)) {
Label_Question.Text = "Please set your name!";
return false;
}
//TODO: you may want add up conditions here
return true;
}
private void Button_Start_Click(object sender, EventArgs e) {
Player player = new Player() {
player.Name = textBox1.Text // you may want this - assign a player's Name
};
if (!IsPlayerValid(player))
return;
Label_Question.Hide();
// Quiz Start
}