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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2016, 07:01   #1
SVD102
Новичок
Джуниор
 
Регистрация: 08.04.2015
Сообщений: 11
По умолчанию Как открыть второй файл

Как сделать так чтобы я мог открыть второй файл. Допустим я открыл первый файл и нажимаю "открыть" потом выбираю в появившемся окошке второй файл, и при открытии второго первый должен автоматически закрыться.
Код:
 private void LoadImage(bool rpt)
        {
 
            // директория, которая будет выбрана как начальная в окне для выбора файла 
            openFileDialog1.InitialDirectory = "c:";
 
            // если будем выбирать jpg файлы 
 
            // устанавливаем формат файлов для загрузки - RPT 
            openFileDialog1.Filter = "file (RPT) files (*.rpt)|*.rpt|file (RPT2) files (*.rpt2)|*.rpt2|All files (*.*)|*.*";
 
 
            // если открытие окна выбора файла завершилось выбором файла и нажатием кнопки ОК 
            ResumeLayout();
 
        }
                
        // обработка кнопки меню "открыть" 
        public void открытьФайлToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            LoadImage(true);
            //LoadImage(false);
            // выход, если была нажата кнопка Отмена и прочие (кроме ОК)
            if (openFileDialog1.ShowDialog() != DialogResult.OK) return;
            {
                // всё. имя файла теперь хранится в openFileDialog1.FileName
                MessageBox.Show("Выбран файл: " + openFileDialog1.FileName);
            }
            int rpt = 0;
            FileName.PathFile = openFileDialog1.FileName;
            string format = null;
            format = Path.GetExtension(openFileDialog1.FileName);
            if (format == ".rpt")
                rpt = 1;
            else
                rpt = 2;
            controller.getFile(FileName.PathFile, rpt);
 
        }
SVD102 вне форума Ответить с цитированием
Старый 11.01.2016, 08:45   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

controller это что?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.01.2016, 08:59   #3
SVD102
Новичок
Джуниор
 
Регистрация: 08.04.2015
Сообщений: 11
По умолчанию

Это метод в котором выполняется считывание файла по по определенному алгоритму и запись этих данных переменные.

Получается после того как я открыл файл у меня выполняется некий алгоритм считывания файла, записываю данные файла в различные переменные. А перед открытием 2 файла мне надо как-то вернуться к первоначальному варианту(то есть перед самым первым открытием файла)
SVD102 вне форума Ответить с цитированием
Старый 11.01.2016, 11:03   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
метод в котором выполняется считывание файла по по определенному алгоритму
Значит и закрытие файла скорее всего произойдет в рамках этого метода по закону уборки мусора.
Цитата:
А перед открытием 2 файла мне надо как-то вернуться к первоначальному варианту
То есть? Что за первоначальный вариант?
Подробнее задачу описывай.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.01.2016, 11:09   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
произойдет в рамках этого метода по закону уборки мусора.
Какому еще закону? Чтоб закрыть файл надо использовать Dispose в try-finally (или using, который это и делает), иначе только сборщик мусора знает когда он захочет его освободить.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 11.01.2016, 14:08   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
иначе только сборщик мусора знает когда он захочет его освободить.
Переменная файла, полагаю, локальна для того метода. GC скорее всего ее там и закроет при выходе из функции.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.01.2016, 14:26   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Переменная файла, полагаю, локальна для того метода. GC скорее всего ее там и закроет при выходе из функции.
неа, иначе бы я давно не ловил баг с тем что файл уже открыт.
сборщик не прибивает объекты локально, только при общей сборке.

неуправляемый ресурс лучше всегда закрывать ЯВНО.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.01.2016, 15:20   #8
SVD102
Новичок
Джуниор
 
Регистрация: 08.04.2015
Сообщений: 11
По умолчанию

Я тут подумал и понял что мне нужно после того как я выберу файл и нажму "Ок" создать заново Model.
Код:
[STAThread]
        static void Main()
        {
            //AllocConsole();
           
            Model model1 = new Model();

            Form1 view1 = new Form1();

            Controller cnt1 = new Controller(view1, model1);

            Application.EnableVisualStyles();

            Application.Run(view1);
            
        }
Теперь вопрос в том как это сделать.

Последний раз редактировалось Stilet; 11.01.2016 в 16:30.
SVD102 вне форума Ответить с цитированием
Старый 11.01.2016, 15:52   #9
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Код:
Model model2 = new Model();
come-on вне форума Ответить с цитированием
Старый 11.01.2016, 16:26   #10
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Цитата:
Переменная файла, полагаю, локальна для того метода. GC скорее всего ее там и закроет при выходе из функции
Виталий, зачем давать вредные советы по C#, если вы его не знаете на должном уровне?
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как открыть файл? Mr_M Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 11.04.2014 22:55
Открыть файл, разделить ячейку на 1000, сохранить файл, закрыть файл. Как? Ник Харди Microsoft Office Excel 7 30.01.2012 18:47
Как открыть файл? Swatch Microsoft Office Access 10 18.03.2011 22:22
Как открыть файл FormAlDeGid Microsoft Office Access 6 02.12.2009 12:33
Как открыть файл? Xnarcotic Общие вопросы Delphi 4 14.06.2009 11:51