Arhn - архитектура программирования

Windows Phone 8.1 без Silverlight VB - не меняет цвет прямоугольника

Я пытаюсь заставить мой прямоугольник изменить цвет после того, как пользователь нажал 4 кнопки. Однако это не так. вот коды.

Private Sub button5_Click(sender As Object, e As RoutedEventArgs) Handles button5.Click

    If currentplayer.Text = "X" Then
        button5.Background = New SolidColorBrush(Windows.UI.Colors.Green)
        currentplayer.Text = "O"

    Else
        If currentplayer.Text = "O" Then
            button5.Background = New SolidColorBrush(Windows.UI.Colors.Blue)
            currentplayer.Text = "X"
       End If
    End If
    Win()
End Sub


Private Sub Win()

    Dim Green As New SolidColorBrush(Windows.UI.Colors.Green)

    If button2.Background Is Green And button5.Background Is Green And button8.Background Is Green And button4.Background Is Green Then
        square1Green.Fill = New SolidColorBrush(Windows.UI.Colors.Green)
    End If
End Sub

Я включил только одну из кнопок, так как они все одинаковые, только номера кнопок разные.

ОБНОВИТЬ**

  Private Sub Win()

    ''SQUARE ONE
    Dim button2Background = TryCast(button2.Background, SolidColorBrush)
    Dim button5Background = TryCast(button5.Background, SolidColorBrush)
    Dim button8Background = TryCast(button8.Background, SolidColorBrush)
    Dim button4Background = TryCast(button4.Background, SolidColorBrush)

    If button2Background IsNot Nothing AndAlso button2Background.Color = Windows.UI.Colors.Green And button5Background IsNot Nothing AndAlso button5Background.Color = Windows.UI.Colors.Green And button8Background IsNot Nothing AndAlso button8Background.Color = Windows.UI.Colors.Green And button4Background IsNot Nothing AndAlso button4Background.Color = Windows.UI.Colors.Green Then
        square1Green.Fill = New SolidColorBrush(Windows.UI.Colors.Green)

    End If
End Sub

ОБНОВЛЕНИЕ 2. Извините за вопросы, как я могу сделать оператор else if, используя это? к чему я стремлюсь, так это если есть 4 цветные кнопки и currentplayer.text = "X", тогда квадрат будет зеленым, однако, если все кнопки имеют цвета, а currentplayer.text = "O", тогда квадрат будет залейте синим цветом.

В очередной раз благодарим за помощь :)

Private Sub Win()

    ''SQUARE ONE
    Dim button2Background = TryCast(button2.Background, SolidColorBrush)
    Dim button5Background = TryCast(button5.Background, SolidColorBrush)
    Dim button8Background = TryCast(button8.Background, SolidColorBrush)
    Dim button4Background = TryCast(button4.Background, SolidColorBrush)

    If currentplayer.Text = "O" And button2Background IsNot Nothing AndAlso button2Background.Color = Windows.UI.Colors.Green Or button2Background.Color = Windows.UI.Colors.Blue And button5Background IsNot Nothing AndAlso button5Background.Color = Windows.UI.Colors.Green Or button5Background.Color = Windows.UI.Colors.Blue And button8Background IsNot Nothing AndAlso button8Background.Color = Windows.UI.Colors.Green Or button8Background.Color = Windows.UI.Colors.Blue And button4Background IsNot Nothing AndAlso button4Background.Color = Windows.UI.Colors.Green Or button4Background.Color = Windows.UI.Colors.Blue Then
        square1Green.Fill = New SolidColorBrush(Windows.UI.Colors.Green)

    Else
        If currentplayer.Text = "X" And button2Background IsNot Nothing AndAlso button2Background.Color = Windows.UI.Colors.Green Or button2Background.Color = Windows.UI.Colors.Blue And button5Background IsNot Nothing AndAlso button5Background.Color = Windows.UI.Colors.Green Or button5Background.Color = Windows.UI.Colors.Blue And button8Background IsNot Nothing AndAlso button8Background.Color = Windows.UI.Colors.Green Or button8Background.Color = Windows.UI.Colors.Blue And button4Background IsNot Nothing AndAlso button4Background.Color = Windows.UI.Colors.Green Or button4Background.Color = Windows.UI.Colors.Blue Then
            square1Green.Fill = New SolidColorBrush(Windows.UI.Colors.Blue)

        End If

    End If
End Sub

  • Вы делаете TryCast на button2 четыре раза, вы должны делать это на 2, 5, 8 и 4. 04.09.2015
  • @PaulAbbott OMG, ты прав на 100%, я пробовал все, что не могу поверить, я пропустил это мимо меня, я, должно быть, не пью достаточно кофе в эти поздние ночи. На данном этапе вроде работает, ты умница! Спасибо за помощь! :) 04.09.2015
  • @PaulAbbott - Просто быстрое обновление, если бы вы могли привести меня в правильном направлении, это было бы чудесно :) 04.09.2015
  • Вы уже отметили ответ. Вы не должны пытаться публиковать несколько вопросов в одном вопросе. Ваше Else заявление. Переместите If под ним на ту же строку, чтобы это было Else If currentpl....., тогда вам нужен только один End If 04.09.2015
  • извините за это, я думал, что есть просто несколько ответов, так как всегда есть более одного способа что-то сделать, я обязательно еще раз прочитаю правила сайта. С другой стороны, после того, как я попробовал ваше предложение, я все еще не могу заставить его работать, еще раз спасибо за сообщение. 04.09.2015
  • Нет, я имею в виду, что кому-то будет сложно добавить новый ответ, который касается только 1 части вашей проблемы, потому что другой ответ покрыл ее. :) Существует более одного способа сделать что-то, но когда вы спрашиваете, как сделать 3 вещи, сложнее получить хороший ответ, который также может помочь другим в будущем. 04.09.2015
  • оооо, теперь я вижу, ну да, это имеет смысл, еще раз спасибо, приятель :) 04.09.2015
  • Без проблем. И то, что вы сказали о том, что многие люди используют C #, я в основном тоже использую его, но я люблю язык BASIC, поэтому я стараюсь следить за любыми вопросами vb :) 05.09.2015
  • Я хочу выучить C#, так как все в сети говорят, что Microsoft в ближайшем будущем урежет Vb.net. Я просто не нашел времени, чтобы действительно сесть и попытаться заняться C#, может оставить это на черный день, ахахаха. В очередной раз благодарим за помощь :) 05.09.2015

Ответы:


1

Is — оператор ссылки; он проверяет, что две ссылки в конечном итоге ссылаются на один и тот же объект. Поскольку Green объявлен как new, button2.Background Is Green никогда не будет истинным, поскольку button2.Background является ссылкой на другой SolidColorBrush. Тот факт, что они оба оказались зелеными, не имеет значения для оператора Is.

Оператор Is определяет, ссылаются ли две ссылки на один и тот же объект. Однако сравнение значений не выполняется. Если объект1 и объект2 ссылаются на один и тот же экземпляр объекта, результат равен True; если они этого не делают, результат False. https://msdn.microsoft.com/en-us/library/kb136x1y.aspx

Вероятно, вам нужно сделать что-то вроде (извините, давно не делал VB)

Dim button2Background = TryCast(button2.Background, SolidColorBrush)
If button2Background isNot Nothing AndAlso button2Background.Color = Windows.UI.Colors.Green...
03.09.2015
  • Спасибо за ваш ответ, вы определенно ведете меня в правильном месте. Только одна небольшая проблема: если я нажму кнопку 2, и ни одна из других перечисленных кнопок не будет иметь зеленый цвет фона, прямоугольник все равно изменит цвет на зеленый. У меня было то же самое, прежде чем использовать оператор If not button2.background, я опубликовал обновление кода выше, есть ли у вас какие-либо идеи? Также спасибо за ссылку, я обязательно посмотрю на нее, да, большинство людей используют C #, поэтому довольно сложно найти поддержку, но при этом огромное спасибо вам за помощь :) 04.09.2015
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..