Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#WINFORMS-使按钮显示类实例化中的字符串变量_C#_Winforms_Button - Fatal编程技术网

C#WINFORMS-使按钮显示类实例化中的字符串变量

C#WINFORMS-使按钮显示类实例化中的字符串变量,c#,winforms,button,C#,Winforms,Button,我正在做一个基本的基于文本的格斗游戏。我有一门课叫move。我的类有一个名为DisplayName的字符串变量。我有以下代码: try { m1.Text = playerMoves[0].displayName; } catch (Exception) { m1.Visible = false; } try {

我正在做一个基本的基于文本的格斗游戏。我有一门课叫move。我的类有一个名为DisplayName的字符串变量。我有以下代码:

        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已经是字符串,为什么我需要将其转换为字符串?因为它处理空异常