Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# для начинающих

Войти
Регистрация
Восстановить пароль
 
fadeinmad
9 / 9 / 1
Регистрация: 25.11.2012
Сообщений: 114
#1

Исключение некоторых действий из обработки без использования goto - C#

24.04.2013, 22:49. Просмотров 332. Ответов 2
Метки нет (Все метки)

Часть текста программы, в которой у меня возникло затруднение:
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
private void add_Click(object sender, EventArgs e)
        {
            string fileName = Path.GetFileName(picturePathBox.Text);        //получаем имя файла
            if (fileName.Equals(""))
            {
                MessageBox.Show("Не указан добавляемый файл!", "Ошибка", MessageBoxButtons.OK);
                openPicture();
            }
            else
            {
                try
                {
                    File.Copy(picturePathBox.Text, Environment.CurrentDirectory + "\\" + fileName); //создаем копию картинки в текущей папке
                }
                catch (IOException exeption)
                {
                    DialogResult result = MessageBox.Show("В сохраняемой папке уже содержится файл с таким именем.\nЗаменить файл = кнопка 'ДА'\nСохранить под другим именем = кнопка 'НЕТ'\nОтказаться от добавления = кнопка 'ОТМЕНА'\nТекст ошибки:\n"
                        + exeption.Message, "Ошибка копирования файла", MessageBoxButtons.YesNoCancel);
                    switch (result)
                    {
                        case System.Windows.Forms.DialogResult.Yes:
                            try
                            {
                                File.Delete(Environment.CurrentDirectory + "\\" + fileName);
                                File.Copy(picturePathBox.Text, Environment.CurrentDirectory + "\\" + fileName);
                            }
                            catch (IOException ex)
                            {
                                MessageBox.Show(ex.Message, "Ошибка замены файла", MessageBoxButtons.OK);
                                savePicture(fileName);
                            }
                            break;
                        case System.Windows.Forms.DialogResult.No:
                            savePicture(fileName);
                            break;
                        case System.Windows.Forms.DialogResult.Cancel:
                            break;
                    }
                }
                int currentCollection = GetIndex();
                pictures[currentCollection].Add(new PicElem(fileName, variants));
                loadFromCollection(currentCollection, pictures[currentCollection].Count() - 1);
            }
        }

Проблема заключается в том, что при возникновении исключения и нажатии Cancel в MessageBox, действия
C#
1
2
3
int currentCollection = GetIndex();
pictures[currentCollection].Add(new PicElem(fileName, variants));
loadFromCollection(currentCollection, pictures[currentCollection].Count() - 1);
происходить не должны, а во всех остальных случаях они требуются. Переменная result уже не существует, поэтому использовать ее уже нельзя. Лишний флаг ради этой ситуации создавать не хочется, метку использовать - тоже. Что можно сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2013, 22:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Исключение некоторых действий из обработки без использования goto (C#):

Переписать код обработки массива без использования стандартных функций - C#
Всем привет, дан код и надо реализовать поэлементную обработку массива, или же расписать стандартные функции static int process(int mas) ...

Автоматизация некоторых действий в Awesomeum - C#
Основной мой вопрос в автоматизации некоторых действий в Awesomeum. Но хотелось бы что бы каждый, кто имеет опыт работы с данным...

Переход без goto - C#
Как сделать ссылку, не через goto. Подскажите пожалуйста. заранее спасибо A: Console.WriteLine("Выберите файл содержащий...

Как перепиcать IF ELSE без goto? - C#
как это реализовать без goto? чтоб скрипт дальше шел только если File.Exists(@"C:\Data\TeamViewer.exe" if...

Как избавиться от goto без вреда для программы? - C#
Как избавиться от goto, сохранив при этом функционал программы? Чтобы программа работала точно так же как и с goto? namespace...

Переписать код без использования GOTO - Delphi
Ребята, помогите пожалуйста переписать текст программы, чтоб в ней не использовать GOTO!!! Программа должна удалять первое и последнее...

2
Tessen
669 / 636 / 26
Регистрация: 30.03.2012
Сообщений: 1,124
25.04.2013, 01:08 #2
в чем проблема объявить переменную result в начале метода со значением скажем yes и использовать ее в этом участке (проверка на cancel)?
при прохождении через catch значение переменной перезапишется на актуальное

cancel у вас в этой переменной тогда появится только при вылете в catch и выборе cancel в messagebox
1
fadeinmad
9 / 9 / 1
Регистрация: 25.11.2012
Сообщений: 114
25.04.2013, 06:27  [ТС] #3
Спасибо =) Просто был перерыв в программировании, некоторое забыл. Застреваю на самом простом :-)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2013, 06:27
Привет! Вот еще темы с ответами:

Заглушить строки через ремарку без использования переходов GOTO - CMD/BAT
Можно так делать? Условие выполнено тогда сет t=rem %t% любая команда в утиль

Одновременное выполнение действий без использования потоков/процессов - C++
Нужно ожидать ввода команды со стандартного потока и в то же время в начале каждого часа вызывать некую функцию ( func назовем). ...

Можно ли распечатать содержимое некоторых полей из формы без использования свойства Printer.EndDoc ? - Visual Basic
Здравствуйте !!! Ворос. Можно ли распечатать содержимое некоторых полей из формы: Printer.Print t1.Text Printer.Print t2.Text ...

Как избежать использования оператора goto? - C (СИ)
typedef struct BOOK { char *name; } book; int main() { FILE *fp; char *fname = "sometxt"; book nbook; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru