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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Есть ли возможность укоротить данный код? 
V
    Опции темы
Fally
Дата 7.4.2008, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 17.8.2006
Где: Dahla

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



Здравствуйте.
Есть метод, есть ли возможность его укоротить, а то слишком много повторов, и каша какая-то получилась.
Код

private FontStyle setFontFormat(string param)
        {
            FontStyle new_style = FontStyle.Regular;
            switch (param)
            {
                case "bold":
                    if (!textBox1.Font.Bold) new_style     |= FontStyle.Bold;
                    if (textBox1.Font.Italic) new_style    |= FontStyle.Italic;
                    if (textBox1.Font.Underline) new_style |= FontStyle.Underline;
                    break;
                case "italic":
                    if (!textBox1.Font.Italic) new_style   |= FontStyle.Italic;
                    if (textBox1.Font.Bold) new_style      |= FontStyle.Bold;
                    if (textBox1.Font.Underline) new_style |= FontStyle.Underline;
                    break;
                case "underline":
                    if (!textBox1.Font.Underline) new_style |= FontStyle.Underline;
                    if (textBox1.Font.Bold) new_style       |= FontStyle.Bold;
                    if (textBox1.Font.Italic) new_style     |= FontStyle.Italic;
                    break;
            };
            return new_style;
        }

Буду благодарен, даже за ссылку, по которой можно прочесть принцип такого укорачивания.


--------------------
Прежде чем задать вопрос на форуме воспользуйтесь поиском.
user posted image
user posted image
PM MAIL   Вверх
Bishop
Дата 7.4.2008, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 188
Регистрация: 3.6.2005
Где: Минск, Беларусь

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



Fally, как минимум:
Код

        private FontStyle setFontFormat(string param)
        {
            FontStyle new_style = FontStyle.Regular;
            switch (param.ToLower().Trim())
            {
                case "bold":
                    new_style = textBox1.Font.Style ^ FontStyle.Bold;
                    break;
                case "italic":
                    new_style = textBox1.Font.Style ^ FontStyle.Italic;
                    break;
                case "underline":
                    new_style = textBox1.Font.Style ^ FontStyle.Underline;
                    break;
            };
            return new_style;
        }



Это сообщение отредактировал(а) Bishop - 7.4.2008, 16:16
PM WWW ICQ   Вверх
Fally
Дата 7.4.2008, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 17.8.2006
Где: Dahla

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



Bishop, блин, спасибо ;) +1 в карму за напоминание об этом чудесном операторе ^


--------------------
Прежде чем задать вопрос на форуме воспользуйтесь поиском.
user posted image
user posted image
PM MAIL   Вверх
source777
Дата 7.4.2008, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Можно в принципе ещё сильнее укоротить, однако не уверен что это будет целесообразно:
Код

        private Hashtable styles = null;
        private FontStyle setFontFormat(string param)
        {
// инициализацию переменной styles лучше вынести в другое место, ближе к общей инициализации
//после этого в теле метода останется всего 5 строк ;-)
            if (styles == null) 
            {
                styles = new Hashtable();
                styles["bold"] = FontStyle.Bold;
                styles["italic"] = FontStyle.Italic;
                styles["underline"] = FontStyle.Underline;
                styles["strikeout"] = FontStyle.Strikeout;
            }
            FontStyle new_style = textBox1.Font.Style;
            string str_style = param.ToLower().Trim();
            if (styles.ContainsKey(str_style))
                new_style = textBox1.Font.Style ^ (FontStyle)styles[str_style];
            return new_style;
        }


Это сообщение отредактировал(а) source777 - 7.4.2008, 22:52


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
source777
Дата 7.4.2008, 23:03 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



А вообще, если всё это дело для чего-то типа текстового редактора и управляется отдельными элементами управления, то тогда можно сделать намного проще: присвоить св-вам Tag этих элементов соответствующие значения и делать, например, так:
Код

  FontStyle new_style = textBox1.Font.Style ^ (FontStyle)Convert.ToInt32((sender as Button).Tag);



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




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


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

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