C # WINFORMS - заставить кнопку отображать строковую переменную из экземпляра класса - PullRequest
0 голосов
/ 06 мая 2018

Я делаю основную текстовую файтинг. У меня есть класс под названием 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 - все кнопки. Все они находятся в скрытой панели, которая отображается до запуска приведенного выше кода.

Итак, у меня есть коллекция List, которая содержит экземпляры перемещения класса. В моем событии Form1_Load я загружаю движения пользователя из XML-файла. У меня также есть класс с именем user . Он имеет уровень пользователя и другие вещи в нем. Каждый раз, когда вы выигрываете бой, вы будете зарабатывать ход в зависимости от вашего уровня. Он добавляет его в коллекцию playerMoves.
Но по какой-то причине на нем отображается только первая кнопка. Если я иду по своему коду, он не попадает в ловушку, но заставляет вторую кнопку (я проверяю ее с помощью второй кнопки) получить DisplayName из playerMoves [1], но когда моя форма возвращается после того, как я Пройдите по коду, отобразится только первая кнопка.
Я убедился, что все кнопки уже видны, прежде чем запустить приведенный выше код, поэтому кто-нибудь может объяснить мне, что не так с моим кодом? Я совершенно потерян.

1 Ответ

0 голосов
/ 06 мая 2018

Не думаю, что это хороший подход к использованию try & catch. Вы можете использовать, если еще условие, как показано ниже. и учитывая, что все кнопки по умолчанию установлены видимыми в false.

if(!String.IsNullOrEmpty(Convert.ToString(playerMoves[0].displayName)))    
           {
             m1.Text = playerMoves[0].displayName;
             m1.Visible=true;
           }
            else
           {
             m1.Visible=true;
           }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...