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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2010, 18:25   #1
lexluter1988
Пользователь
 
Аватар для lexluter1988
 
Регистрация: 20.04.2010
Сообщений: 47
По умолчанию Как прописать исключения для openFileDialog1 и saveFileDialog1?

Создан простой текстовый редактор(скриншот прилагается).
Сделал с помощью Windows Forms и C#. Для openFileDialog1 и saveFileDialog1 нужно задать фильтр для txt-фалов.
Проблема в том, что если отменить открытие то выводится сообщение "Необработанное исключение типа "System.ArgumentException" произошло в mscorlib.dll"

Вот код
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace FileApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void menuItemOpen_Click(object sender, System.EventArgs e)
        {
            openFileDialog1.ShowDialog();
            string fileName = openFileDialog1.FileName;
            FileStream stream = File.Open(fileName, FileMode.Open, FileAccess.Read);

            if(stream!=null)
            {
                StreamReader reader = new StreamReader(stream);
                textBox1.Text = reader.ReadToEnd();
                stream.Close();
            }


        }

        private void menuItemSave_Click(object sender, EventArgs e)
        {
            saveFileDialog1.ShowDialog();
            string fileName = saveFileDialog1.FileName;
            FileStream stream = File.Open(fileName, FileMode.Create, FileAccess.Write);

            if(stream!=null)
            {
                StreamWriter writer = new StreamWriter(stream);
                writer.Write(textBox1.Text);
                writer.Flush();
                stream.Close();
            }
        }
    }
}
Изображения
Тип файла: png lex.png (5.5 Кб, 130 просмотров)
lexluter1988 вне форума Ответить с цитированием
Старый 14.05.2010, 18:26   #2
lexluter1988
Пользователь
 
Аватар для lexluter1988
 
Регистрация: 20.04.2010
Сообщений: 47
По умолчанию

Прошу прощения за отсутствие коментариев
lexluter1988 вне форума Ответить с цитированием
Старый 14.05.2010, 18:40   #3
m0nax
Форумчанин
 
Аватар для m0nax
 
Регистрация: 25.09.2009
Сообщений: 525
По умолчанию

добавь проверку результата этих диалогов
Код:
if(saveFileDialog1.ShowDialog() == DialogResult.Ok) //там еще варианты есть в перечислении
{
//значит выбрали что-то и нажали ОК
}
else
{
//что-то другое, отменили например
}
m0nax вне форума Ответить с цитированием
Старый 14.05.2010, 19:45   #4
lexluter1988
Пользователь
 
Аватар для lexluter1988
 
Регистрация: 20.04.2010
Сообщений: 47
По умолчанию

вставил так
Код:
private void menuItemSave_Click(object sender, EventArgs e)
        {
            saveFileDialog1.ShowDialog();

            if (saveFileDialog1.ShowDialog() == DialogResult.OK) 
            {
                string fileName = saveFileDialog1.FileName;
                FileStream stream = File.Open(fileName, FileMode.Create, FileAccess.Write);

                if (stream != null)
                {
                    StreamWriter writer = new StreamWriter(stream);
                    writer.Write(textBox1.Text);
                    writer.Flush();
                    stream.Close();
                } 
            }
            else
            {
                saveFileDialog1.Dispose();
            }

            
           
        }
отменяет нормально, но только со второго раза. т.е. первый раз жмем на Отмена и диалог остается, жмем второй раз-все нормально отменяет
lexluter1988 вне форума Ответить с цитированием
Старый 14.05.2010, 19:47   #5
lexluter1988
Пользователь
 
Аватар для lexluter1988
 
Регистрация: 20.04.2010
Сообщений: 47
По умолчанию

и сохраняет кстати тоже со второго раза.
спасибо кстати.
lexluter1988 вне форума Ответить с цитированием
Старый 15.05.2010, 17:43   #6
m0nax
Форумчанин
 
Аватар для m0nax
 
Регистрация: 25.09.2009
Сообщений: 525
По умолчанию

убери первый saveFileDialog1.ShowDialog(); и будет с первого раза
m0nax вне форума Ответить с цитированием
Старый 15.05.2010, 18:34   #7
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

Для обработки исключений, существует конструкция try catch или try finally.
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Старый 18.05.2010, 12:12   #8
lexluter1988
Пользователь
 
Аватар для lexluter1988
 
Регистрация: 20.04.2010
Сообщений: 47
По умолчанию

Всем сппасибо. разобрался с помощью вас и MSDN
вот рабочий на 100% текстовый редактор
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;


namespace test4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Stream myStream = null;
            OpenFileDialog openFileDialog1 = new OpenFileDialog();

            openFileDialog1.InitialDirectory = "c:\\";
            openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
            openFileDialog1.FilterIndex = 2;
            openFileDialog1.RestoreDirectory = true;

            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    if ((myStream = openFileDialog1.OpenFile()) != null)
                    {
                        using (myStream)
                        {
                         //   string fileName = openFileDialog1.FileName;
                        //    FileStream stream = File.Open(fileName, FileMode.Open, FileAccess.Read);

                            if (myStream != null)
                            {
                                StreamReader reader = new StreamReader(myStream);
                                textBox1.Text = reader.ReadToEnd();
                                myStream.Close();
                            }
                            // Insert code to read the stream here.
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
                }
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Stream myStream;
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();

            saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
            saveFileDialog1.FilterIndex = 2;
            saveFileDialog1.RestoreDirectory = true;

            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                if ((myStream = saveFileDialog1.OpenFile()) != null)
                {
                    if (myStream != null)
                    {
                        StreamWriter writer = new StreamWriter(myStream);
                        writer.Write(textBox1.Text);
                        writer.Flush();
                        myStream.Close();
                    }
                    // Code to write the stream goes here.
                    myStream.Close();
                }
            }
        }
    }
}
lexluter1988 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прописать роут для передачи инета другому компу iankov Операционные системы общие вопросы 3 27.12.2010 17:49
не могу прописать php для апачи Gokusa PHP 9 28.01.2010 10:54
Что прописать в boot.ini для возможности выбора нужной ОС при загрузке ПК ? DenS Общие вопросы C/C++ 3 07.10.2008 19:11
Как прописать в HKEY_CURRENT_USER ? UnD)eaD)Snake Общие вопросы Delphi 4 27.07.2007 21:52
Помогите прописать PageSetupDialog1 для RichEdit1 kuzmich Общие вопросы Delphi 4 08.05.2007 09:23