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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> открытие файлов 
V
    Опции темы
aleknek
Дата 11.3.2007, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Помогите новичку в С шарпе. Пытаюсь создать простенькое приложение, которое позволяло бы открывать файлы, ( я думаю, что с помощью OpenFileDialog ) и сохранять их, но не могу понять, как нужно изменить код метода 
private void открытьToolStripMenuItem_Click(object sender, EventArgs e)
        {
               ???????????
        }
        
чтобы открыть диалоговое окно ? Подскажите пожалуйста.

PM MAIL   Вверх
mr.DUDA
Дата 11.3.2007, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Пример:

Код
using System;
using System.IO;
using System.Windows.Forms;

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

        private void открытьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // выбор файла для чтения
            OpenFileDialog dlg = new OpenFileDialog();
            dlg.Filter = "Текстовые файлы|*.txt";
            if (dlg.ShowDialog() == DialogResult.Cancel) return;
            string path = dlg.FileName;

            // открытие, чтение
            if (!File.Exists(path)) return;
            StreamReader reader = new StreamReader(path);
            string text = reader.ReadToEnd();
            reader.Close();

            text += "что-то дописываем в конец файла";

            // выбор файла для сохранения
            SaveFileDialog dlg2 = new SaveFileDialog();
            dlg2.InitialDirectory = Path.GetDirectoryName(path);
            dlg2.FileName = path;
            dlg2.Filter = dlg.Filter; // юзаем тот же тип файлов (фильтр по расширениям)
            dlg2.AddExtension = true; // пусть всегда добавляется расширение .txt
            dlg2.OverwritePrompt = true; // если файл существует, спросим надо ли перезаписать
            if (dlg2.ShowDialog() == DialogResult.Cancel) return;

            // запись
            StreamWriter writer = new StreamWriter(dlg2.FileName);
            writer.Write(text);
            writer.Close();
        }
    }
}



--------------------
user posted image
PM MAIL WWW   Вверх
aleknek
Дата 11.3.2007, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо огромное, все работает, оказывается все не так сложно как мне казалось.
PM MAIL   Вверх
aleknek
Дата 12.3.2007, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace My
{
    public partial class Form1 : Form
    {
        Form2 f2;
        public Form1()
        {
            InitializeComponent();
            f2 = new Form2(this);
        }

        private void оПрограммеToolStripMenuItem_Click(object sender, EventArgs e)
        {
            f2.Show();
        }

        private void открытьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg= new OpenFileDialog();
            dlg.Filter = "Text Documents (*.txt)|*.txt|All Files|*.*";
            if (dlg.ShowDialog() == DialogResult.Cancel) return;
            string path = dlg.FileName;

         }

        private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SaveFileDialog dlg2 = new SaveFileDialog();
            dlg2.Filter = dlg2.Filter;
            dlg2.OverwritePrompt = true; // если файл существует, спросим надо ли перезаписать
            if (dlg2.ShowDialog() == DialogResult.Cancel) return;
        }

        private void выходToolStripMenuItem_Click(object sender, EventArgs e)
        {
            System.Windows.Forms.Application.Exit();
        }
    }
}
 
PM MAIL   Вверх
Tror
Дата 13.3.2007, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 29.4.2005
Где: Кишинёв

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



превед smile

думаю ты сам до конца не понимаешь что ты пишешь
вот этот кусок кода:
Код

OpenFileDialog dlg= new OpenFileDialog();
dlg.Filter = "Text Documents (*.txt)|*.txt|All Files|*.*";
if (dlg.ShowDialog() == DialogResult.Cancel) return;
string path = dlg.FileName;

всего то и делает что открывает диалог выбора файла, а затем если файл был выбран присваивает переменной path имя файла,
но никак его не открывает

вот этот кусок:
Код

SaveFileDialog dlg2 = new SaveFileDialog();
dlg2.Filter = dlg2.Filter;
dlg2.OverwritePrompt = true; // если файл существует, спросим надо ли перезаписать
if (dlg2.ShowDialog() == DialogResult.Cancel) return;

просто открывает диалог сохранения файла.
к тому же
Код

dlg2.Filter = dlg2.Filter;

это абсолютный бред, так как при создании при создании диалога фильтр по умолчанию равен "" т.е. пустой строке
и ты присваиваешь его самому же себе. если ты внимательно присмотришься к коду mr.DUDA,
то увидишь некоторые отличия
Код

dlg2.Filter = dlg.Filter;

т.е. он присваивает фильтру вновь созданного диалога тот же фильтр который он указал ранее
Код

dlg.Filter = "Текстовые файлы|*.txt";


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

Код

// открытие, чтение
if (!File.Exists(path)) return;
StreamReader reader = new StreamReader(path);
string text = reader.ReadToEnd();
reader.Close();


Код

// запись
StreamWriter writer = new StreamWriter(dlg2.FileName);
writer.Write(text);
writer.Close();

--------------------
Не говори всегда что знаешь, но знай всегда что говоришь. /Клавдий/============================================Кто может -- тот делает. Кто не может... тот получает сертификат MCSE ;)
PM MAIL ICQ   Вверх
aleknek
Дата 13.3.2007, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

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


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

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


 




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


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

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