C#WINFORMS-使按钮显示类实例化中的字符串变量
我正在做一个基本的基于文本的格斗游戏。我有一门课叫move。我的类有一个名为DisplayName的字符串变量。我有以下代码:C#WINFORMS-使按钮显示类实例化中的字符串变量,c#,winforms,button,C#,Winforms,Button,我正在做一个基本的基于文本的格斗游戏。我有一门课叫move。我的类有一个名为DisplayName的字符串变量。我有以下代码: try { m1.Text = playerMoves[0].displayName; } catch (Exception) { m1.Visible = false; } try {
try
{
m1.Text = playerMoves[0].displayName;
}
catch (Exception)
{
m1.Visible = false;
}
try
{
m2.Text = playerMoves[1].displayName;
}
catch (Exception)
{
m2.Visible = false;
}
try
{
m3.Text = playerMoves[2].displayName;
}
catch (Exception)
{
m3.Visible = false;
}
try
{
m4.Text = playerMoves[3].displayName;
}
catch (Exception)
{
m4.Visible = false;
}
try
{
m5.Text = playerMoves[4].displayName;
}
catch (Exception)
{
m5.Visible = false;
}
try
{
m6.Text = playerMoves[5].displayName;
}
catch (Exception)
{
m6.Visible = false;
}
这段代码是在一个按钮点击事件中启动的。m1、m2、m3、m4、m5和m6都是按钮。它们都在一个隐藏面板中,在运行上述代码之前显示
所以,我有一个列表集合,它保存类move的实例化。在我的Form1_加载事件中,我从XML文件加载用户的移动。我还有一个名为user的类。它包含用户级别和其他内容。无论何时你赢得一场战斗,你都将根据你的等级赢得一次移动。它将其添加到playerMoves集合中但由于某些原因,它只显示第一个按钮。如果我浏览我的代码,它不会进入catch,但它会使第二个按钮(我正在用第二个按钮测试)从playerMoves[1]获取显示名,但当我浏览完代码后返回表单时,它只显示第一个按钮。
在我运行上面的代码之前,我已经确保所有的按钮都是可见的,所以有人能解释一下我的代码有什么问题吗?我完全迷路了。我不认为使用try&catch是个好方法。您可以使用下面的if-else条件。并考虑到默认情况下所有按钮都设置为“可见”为“假”
if(!String.IsNullOrEmpty(Convert.ToString(playerMoves[0].displayName)))
{
m1.Text = playerMoves[0].displayName;
m1.Visible=true;
}
else
{
m1.Visible=true;
}
为什么要在代码中使用多个try and catch,因为我这样做是为了查看是否存在移动。如果我在playerMoves中只有一个移动,那么将只显示一个按钮。这就是所有try-catch所做的。在try-part中将visible设置为true。如果您尝试了,但它不起作用,请告诉我,但如果playerMoves[0]。displayName已经是字符串,为什么我需要将其转换为字符串?因为它处理空异常