Okna dialogu zapisu i odczytu plików

Jest wiele sposobów rozwiązań zapisu i odczytu plików danych i graficznych. Ten temat będzie oparty na kontrolkach SaveFileDialog i OpenFileDialog

Cel: Utwórz aplikację pozwalająca odczytać i zapisać dowolny plik tekstowy oraz wczytać plik graficzny o rozszerzeniach *.bmp. *.jpg, *.png i *.ico

Okna dialogu zapisu i odczytu plików visula studio c#

Krok 1. Układ komponentów

Uwaga: Kontrolki SaveFileDialog i OpenFileDialog są kontrolkami niewizualnymi. W Przyborniku znajdują się w grupie Okna dialogowe

SaveFileDialog visual studio c#

Nie osadza się ich w obszarze formatki tworzonego okna aplikacji lecz tuż pod nim

osadza się ich w obszarze formatki tworzonego okna aplikacji lecz tuż pod nim

Osadzając kolejne kontrolki należy kontrolkę TextBox osadzić w jednej z kontrolek GroupBox, a kontrolkę Panel w drugiej kontrolce GroupBox. Kontrolka PictureBox osadzona jest wewnątrz kontrolki Panel

kontrolkę TextBox Visual Studio C#

Krok 2. Ustawiamy właściwości wybranych komponentów

Przykładowa zawartość MenuStrip przedstawiona jest poniżej

zawartość MenuStrip visula studio

Jedna z kontrolek GroupBox przechowuje kontrolkę TextBox. Właściwość Dock kontrolki groupBox1 ustawimy na Left

Dock Visual Studio c#

Dla kontrolki groupBox2 właściwość Dock kontrolki groupBox1 ustawimy na Fill

kontrolki groupBox2 właściwość Dock kontrolki groupBox1 ustawimy na Fill visual studio c#

Kontrolka textBox1 jest wypełnieniem kontrolki groupBox1 i będzie służyć do wyprowadzenia zawartości wczytanego pliku tekstowego lub do pisania dowolnego tekstu na zasadach notatnika Windows'a.

Jej tryb pracy ustawimy jako wieloliniowy, czyli właściwości Multiline przypiszemy wartość True

Multiline przypiszemy wartość True visual studio c#

Spodziewamy się nieokreślonej wielkości wczytywanych plików tekstowych, stąd aby móc przeglądać ich zawartość powinniśmy mieć belki przewijania. Ustawiamy właściwość ScrollBars dla kontrolki textBox1

ScrollBars true visual studio c#

Dla kontrolki panel1 właściwość Dock ustawimy na Fill, jednocześnie wywołamy w niej możliwość przewijania poprzez ustawienie właściwości AutoScroll na True

właściwość Dock ustawimy na Fill

Skompiluj i uruchom projekt

Krok 3. Przygotowanie zapisu i odczytu plików z poziomu naszej aplikacji

Aby można było pracować z plikami należy zainicjować przestrzeń nazw System.IO, która zawiera typy umożliwiające odczytywanie i zapisywanie do plików i strumieni danych. Do kodu dodajemy System.IO

Wskazówka:


	using System;
	using System.IO;

W zdarzeniu Load formatki Form1 ustawiamy ścieżkę pierwszego otwarcia okien dialogowych zapisu i odczytu plików

Wskazówka:


private void Form1_Load(object sender, EventArgs e)
{
	//ustawa katalog zapisu na katalog z którego uruchomiono aplikację
	saveFileDialog1.InitialDirectory = Environment.CurrentDirectory;
	openFileDialog1.InitialDirectory = Environment.CurrentDirectory;
}

Krok 4. Zapisujemy plik tekstowy w wybranej lokalizacji dysku

Okna dialogowe ułatwiające zapis i odczyt zawierają szereg przydatnych funkcji związanych na przykład z filtrowaniem zawartości dysku komputera itp. W zdarzeniu Click opcji menu wprowadzimy poniższy kod. Kod zawiera komentarz ułatwiający zrozumienie przeznaczenia poszczególnych wierszy. Dodatkowo ścieżkę zapisywanego pliku wyświetlimy w toolStripStatusLabel1

Wskazówka:


private void ZapiszToolStripMenuItem_Click(object sender, EventArgs e)
{
	//przykład zapisu zawartośći kontrolki textbox1 do pliku tekstowego
	//ustaw filtr plików
	saveFileDialog1.Filter = "Pliki tekstowe .txt|*.txt|Wszystkie pliki *.*|*.*";
	//ustaw tytuł okna zapisu dialogowego
	saveFileDialog1.Title = "Zapisz zawartość";
	//narzuć filtr podstawowy
	saveFileDialog1.DefaultExt = "txt";
	if (saveFileDialog1.ShowDialog() == DialogResult.OK)
	{
		StreamWriter plik = new StreamWriter(saveFileDialog1.FileName,false);
		plik.WriteLine(textBox1.Text);
		plik.Close();
		toolStripStatusLabel1.Text = saveFileDialog1.FileName;
	}
}

Skompiluj i uruchom program. Sprawdź efekt działania.

Prawidłowo działająca aplikacja pozwala otworzyć okno dialogowe zapisu pliku

aplikacja pozwala otworzyć okno dialogowe zapisu pliku

A w folderze, w którym znajduje sie plik *.exe naszej aplikacji zostanie utworzony plik tekstowy

zapis do pliku tekstowego visual studio c#

Uruchom standardowy notatnik Windows'a i wyczytaj utworzony przez siebie plik. Przykładowy odczyt przedstawia poniższa ilustracja

plik teskstowy c#

Krok 5. Wczytujemy plik tekstowy

W zdarzeniu Click funkcji menu otwarcia pliku przypisujemy poniższy kod. Ścieżkę wczytanego pliku pokażemy w toolStripStatusLabel1

Wskazówka:


private void OtworzToolStripMenuItem_Click(object sender, EventArgs e)
{
	//ustaw filtr plików
	openFileDialog1.Filter = "Pliki tekstowe .txt|*.txt|Wszystkie pliki *.*|*.*";
	//ustaw tytuł okna zapisu dialogowego
	openFileDialog1.Title = "Otwórz plik";
	//narzuć filtr podstawowy
	openFileDialog1.DefaultExt = "txt";
	if (openFileDialog1.ShowDialog() == DialogResult.OK)
	{
		textBox1.Text = null;
		StreamReader plik = new StreamReader(openFileDialog1.FileName);
		string linia;
		while ((linia = plik.ReadLine()) != null)
		{
			textBox1.AppendText(linia);
		}
		plik.Close();
		toolStripStatusLabel1.Text = openFileDialog1.FileName;
	}
}

Skompiluj i uruchom program. Sprawdź efekt działania.

Krok 6. Wczytanie pliku grafiki

Opcje wczytania pliku graficznego wiążą się ze zmianą filtru okna dialogowego otwarcia plików. Realizację ładowania grafiki do kontrolki pictureBox1 wykonamy w jej zdarzeniu Click przez wykonanie poniższego kodu. Ten kod pozwala wczytac pliki graficzne typu jpg, png, bmp i ico.

Wskazówka:


private void PictureBox1_Click(object sender, EventArgs e)
{
	//ustaw filtr plików
	openFileDialog1.Filter = "Pliki bmp .bmp|*.bmp|Pliki jpg .jpg|*.jpg| Pliki png .png|*.png| Pliki ikon .ico|*.ico";
	//ustaw tytuł okna zapisu dialogowego
	openFileDialog1.Title = "Otwórz plik obrazu";
	//narzuć filtr podstawowy
	openFileDialog1.DefaultExt = "png";
	if (openFileDialog1.ShowDialog() == DialogResult.OK)
	{
		pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);
		toolStripStatusLabel1.Text = openFileDialog1.FileName;
	}
}

Skompiluj i uruchom program. Sprawdź efekt działania.

wczytany plik *.ico Visual Studio C#

Pełny kod utworzonej aplikacji

Wskazówka:


using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

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

        private void ZamknijToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void ZapiszToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //przykład zapisu zawartośći kontrolki textbox1 do pliku tekstowego
            //ustaw filtr plików
            saveFileDialog1.Filter = "Pliki tekstowe .txt|*.txt|Wszystkie pliki *.*|*.*";
            //ustaw tytuł okna zapisu dialogowego
            saveFileDialog1.Title = "Zapisz zawartość";
            //narzuć filtr podstawowy
            saveFileDialog1.DefaultExt = "txt";
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                StreamWriter plik = new StreamWriter(saveFileDialog1.FileName,false);
                plik.WriteLine(textBox1.Text);
                plik.Close();
                toolStripStatusLabel1.Text = saveFileDialog1.FileName;
            }
        }

        private void OtworzToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //ustaw filtr plików
            openFileDialog1.Filter = "Pliki tekstowe .txt|*.txt|Wszystkie pliki *.*|*.*";
            //ustaw tytuł okna zapisu dialogowego
            openFileDialog1.Title = "Otwórz plik";
            //narzuć filtr podstawowy
            openFileDialog1.DefaultExt = "txt";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                textBox1.Text = null;
                StreamReader plik = new StreamReader(openFileDialog1.FileName);
                string linia;
                while ((linia = plik.ReadLine()) != null)
                {
                    textBox1.AppendText(linia);
                }
                plik.Close();
                toolStripStatusLabel1.Text = openFileDialog1.FileName;
            }

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //ustawa katalog zapisu na katalog z którego uruchomiono aplikację
            saveFileDialog1.InitialDirectory = Environment.CurrentDirectory;
            openFileDialog1.InitialDirectory = Environment.CurrentDirectory;
        }

        private void PictureBox1_Click(object sender, EventArgs e)
        {
            //ustaw filtr plików
            openFileDialog1.Filter = "Pliki bmp .bmp|*.bmp|Pliki jpg .jpg|*.jpg| Pliki png .png|*.png| Pliki ikon .ico|*.ico";
            //ustaw tytuł okna zapisu dialogowego
            openFileDialog1.Title = "Otwórz plik obrazu";
            //narzuć filtr podstawowy
            openFileDialog1.DefaultExt = "png";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);
                toolStripStatusLabel1.Text = openFileDialog1.FileName;
            }
        }
    }
}
Układ okresowy- kod qr
Układ okresowy

Układ okresowy pierwiastków- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
Alkomat- wirtualny test kod qr
Alkomat- wirtualny test

Alkomat- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
Taklarz- olinowanie stałe kod qr
Olinowanie stałe- kalkulator średnic

Olinowanie stałe- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
przepis na gogfry

Przepis na gofry

zobacz
przepis na bitą śmietanę

Przepis na bitą śmietanę

zobacz