Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2012, 06:07   #1
Cerebrum
Пользователь
 
Регистрация: 21.03.2009
Сообщений: 24
По умолчанию Вопрос об обращении к элементам enum

Суть проблемы. Использую OpenCv. Есть процедура:
Код:
public static void MorphologyEx(CvArr src, CvArr dst, CvArr temp, IplConvKernel element, MorphologyOperation operation, int iterations);
В своем приложении использую в таком виде:
Код:
Cv.MorphologyEx(pictold, pictnew, timg, kern, MorphologyOperation.BlackHat, (int)numericUpDown1.Value);
5 параметр (MorphologyOperation.BlackHat) процедуры является элементом множества:
Код:
    public enum MorphologyOperation
    {
        Open = 2,
        Close = 3,
        Gradient = 4,
        TopHat = 5,
        BlackHat = 6,
    }
А задача стоит в следующем. На форме есть combobox с перечислением методов. В зависимости от выбранного метода (индекс combobox-a), хотелось бы, чтоб подставлялся соответствующий элемент структуры (по индексу или значению). Написал через switch...case. Все работает, но это совсем не оптимально, а теперь и подавно, когда уже требуются вложенные switch...case-ы.
Cerebrum вне форума Ответить с цитированием
Старый 09.01.2012, 13:57   #2
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Попробуй так:
Код:
MorphologyOperation operation = (MorphologyOperation)Enum.Parse(typeof(MorphologyOperation), comboBox1.SelectedValue);
Hollander вне форума Ответить с цитированием
Старый 09.01.2012, 14:20   #3
Cerebrum
Пользователь
 
Регистрация: 21.03.2009
Сообщений: 24
По умолчанию

Чуть подправил код:
Код:
MorphologyOperation operation = (MorphologyOperation)Enum.Parse(typeof(MorphologyOperation), (string)comboBox1.SelectedItem);
Теперь все работает. Спасибо Hollander!
Cerebrum вне форума Ответить с цитированием
Старый 09.01.2012, 14:57   #4
Cerebrum
Пользователь
 
Регистрация: 21.03.2009
Сообщений: 24
По умолчанию

Хотел все же использовать свои названия модификаторов функции.
Оказалось все проще с использованием индексов combobox-a (надо опираться на значения, присвоенные элементам множества. Ну и в нужном порядке писать элементы combobox-a):
Код:
MorphologyOperation operation = (MorphologyOperation)comboBox1.SelectedIndex+2;
Кому может будет полезно...
Cerebrum вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
c++ enum tanek Помощь студентам 1 06.12.2011 04:43
Enum в обьект. vjmap C# (си шарп) 2 08.10.2011 11:16
к элементам первой половины массива добавить минимум, а к элементам второй - добавить максимум specialist Паскаль, Turbo Pascal, PascalABC.NET 3 08.05.2011 01:46
enum Syltan Общие вопросы C/C++ 6 26.11.2009 19:24
Вопрос о перечислениях: enum DR&FG Общие вопросы C/C++ 2 24.10.2009 18:12