Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Некорректно отрабатывает switch, пеняю на WPF (наверное, зря) 
V
    Опции темы
ДобренькийПапаша
Дата 5.10.2010, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: 2
Всего: 7



Странное дело творится. 
Вот разметка xaml, создающая комбо-бокс.
Код

<ComboBox
                  x:Name="cbColor"
                  Height="30"
                  Margin="3,3,1,3"
                  BorderBrush="Black"
                  BorderThickness="1"
                  FontSize="13.333"
                  Padding="3" SelectionChanged="cbColor_SelectionChanged" SelectedIndex="-1">
                  <ComboBoxItem Content="Белый"/>
                  <ComboBoxItem Content="Красный"/>
                  <ComboBoxItem Content="Синий"/>
                  <ComboBoxItem Content="Золотой"/>
                  <ComboBoxItem Content="Зелёный"/>
                  <ComboBoxItem Content="Оранжевый"/>
               </ComboBox>

Код

 private void cbColor_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            switch (cbColor.Text)
            {
                case "Белый":
                    {
                        choosedColor = Colors.White;
                        this.choosedColorCost = 600;
                        break;
                    }
                case "Золотой":
                    {
                        choosedColor = Colors.Gold;
                        this.choosedColorCost = 900;
                        break;
                    }
                default:
                    {
                        choosedColor = Colors.Other;
                        this.choosedColorCost = 650;
                        break;
                    }
            }

            SetPrice();
        }       


Что не выбирай в этом комбо-боксе - всегда отрабатывает default в switch'е! В чём может быть дело?


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
Sartorius
Дата 5.10.2010, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 1
Всего: 37



Делай switch по selectedIndex.
PM MAIL ICQ   Вверх
WolfTheGrey
Дата 6.10.2010, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 21.1.2009
Где: forum.vingrad.ru

Репутация: 2
Всего: 2



а зачем свитчь? у тебя 32 ядерный процессор от интел хеон??????????

PM MAIL   Вверх
CYBERDREAM
Дата 6.10.2010, 08:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 3
Всего: 28



можешь так,если знаешь что точно не нулл и т.д.
Код

switch(((ComboBoxItem)cbColor.SelectedItem).Content.ToString()) 
{

}




--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
ДобренькийПапаша
Дата 6.10.2010, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: 2
Всего: 7



Цитата(Sartorius @  5.10.2010,  21:39 Найти цитируемый пост)
Делай switch по selectedIndex. 


А почему проблемы с моим вариантом? Каково рациональное объяснение? То, что свитч лучше делать по индексу я, кажется, понял)))


Цитата(WolfTheGrey @  6.10.2010,  01:25 Найти цитируемый пост)
а зачем свитчь? у тебя 32 ядерный процессор от интел хеон??????????


А это меня просто пугает. Множество раз читал, что свитч из всех условных конструкций работает быстрее всего. Почему вы считаете, что это не так и какова альтернатива?


CYBERDREAM, да, так работает, спасибо.


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
WolfTheGrey
Дата 6.10.2010, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 21.1.2009
Где: forum.vingrad.ru

Репутация: 2
Всего: 2



свичь занимает процесорное время, а иф пердпроцесорные блоки (както так)
Да и будет у тебя в комбобоксе 250 цветов, ты их будешь все в ручную прописывать?
PM MAIL   Вверх
Sartorius
Дата 6.10.2010, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 1
Всего: 37



Цитата(ДобренькийПапаша @  6.10.2010,  10:06 Найти цитируемый пост)
почему проблемы с моим вариантом? Каково рациональное объяснение? 

Потому что Text комбобокса и текст в выбранном элементе - это разные вещи. А вообще, для твоего случая больше подошел бы биндинг к ObservableCollection. 

Цитата(WolfTheGrey @  6.10.2010,  14:20 Найти цитируемый пост)
свичь занимает процесорное время, а иф пердпроцесорные блоки (както так)

Чего только не узнаешь...
PM MAIL ICQ   Вверх
ДобренькийПапаша
Дата 6.10.2010, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: 2
Всего: 7



Цитата(WolfTheGrey @  6.10.2010,  13:20 Найти цитируемый пост)
свичь занимает процесорное время, а иф пердпроцесорные блоки (както так)
Да и будет у тебя в комбобоксе 250 цветов, ты их будешь все в ручную прописывать? 


Я умываю руки.

Sartorius, гы, а что же возвращает текст комбобокса как ни текст внутри, то есть текст выбранного элемента. Ладно, проверю сам. Всем спасибо)))


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
gambit
Дата 6.10.2010, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: нет
Всего: 40



Цитата(WolfTheGrey @  6.10.2010,  13:20 Найти цитируемый пост)
свичь занимает процесорное время, а иф пердпроцесорные блоки (както так)

возможно и так, но на современных компах, это не заметно вообще.
Да, на производстве стараются избегать свичей, но не делают из этого трагедии.

Цитата(WolfTheGrey @  6.10.2010,  13:20 Найти цитируемый пост)
Да и будет у тебя в комбобоксе 250 цветов, ты их будешь все в ручную прописывать? 

Хороший аргумент, но в данном случае(не особо вглядывался в суть) заменить один свич из 250 элементов, на 250 ифов, это ене есть кулл((

ДобренькийПапаша, у элементов combobox должно быть свойство value, занеси в него числовое значение цвета, и весь твой свич, какое бы кол-во элементов не было, сведется к:

choosedColor = Colors.FromRGB(cbColor.SelectedValue)

Добавлено через 2 минуты и 49 секунд
ДобренькийПапаша, кстати на мой взгляд, логичнее топик было создать в общих вопросах. В вопросах wpf должны быть вопросы по wpf, а не любой вопрос из проекта на wpf
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0730 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.