Witam
Mam bardzo duzy problem, dla was bedzie pewnie smieszny. Nie mam najmniejszego pojecia jak zczytac plik txt do text boxa albo do zmiennej.
Prosil bym o pomoc: mam plik.txt i chcialbym zeby jego zawartosc znalazla sie w textboxie :-)
Dzieki Wielkie
Mam jeszcze 2 pytania
Jak podstawic to co mam w pliku txt(liczba) do zmiennej typu double
czy da sie jakos nadpisywac pliki txt, mam taki kod
FileStream plik1 = new FileStream("historia.txt", FileMode.Create);
StreamWriter strumien1 = new StreamWriter(plik1, Encoding.Unicode);
strumien1.WriteLine(opis);
strumien1.Close();
plik1.Close();
i za kazdym razem to co wpisze zastepuje mi stary wpis a potrzebuje miec je wszystkie
double liczba = Convert.ToDouble(plikTxt.ReadLine()); // wczytuje tekst z pierwszego wiersza pliku txt i podstawia go pod zmienną double (w pliku liczba powinna być zapisan np. 4,56)
To jest spowodowane tym że plik jest otwarty za pomocą FileMode.Create co oznacza że tworzy nowy plik, a jeśli plik istnieje to go nadpisuje. U siebie powinienneś użyć FileMode.Append.
Pozdrawiam.
To drugie dziala rewelacyjnie ale nie moge dojsc do ladu z tym pierwszym, brakuje mi tylko tego zebym mogl jusz ruszyc dalej - nic wiecej jusz mi nie bedzie potrzebne
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace Portfel_ver.beta
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void button3_Click(object sender, EventArgs e)
{
//pytanie o zamkniecie programu
if (MessageBox.Show("Czy operacje zostały skończone?", "Uwaga", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes) this.Close();
}
private void button1_Click(object sender, EventArgs e)
{
//wplata-wartosc wplacana
//glowny-zczytywana zawartosc portfela z pliku stan.txt
//pomocny-zmienna dublujaca glowny
//opis-historia wplacania
Double wplata,robol;
String opis;
//operacja wplaty
wplata = Double.Parse(textBox1.Text);
if (wplata >= 0)
{
MessageBox.Show("wplata wynosi: " + wplata.ToString("N4"), "Wplata", MessageBoxButtons.OK, MessageBoxIcon.Information);
MessageBox.Show("Operacja zakończona pomyślnie", "Wpłata", MessageBoxButtons.OK);
}
else
MessageBox.Show("Skorzystaj z opcji wyplata", "Blad", MessageBoxButtons.OK, MessageBoxIcon.Error);
//pobieranie wartosci stanu portfela z pliku stan.txt i zapis do zmiennej robol
// nie dziala double robol = Convert.ToDouble("stan.txt", ReadLine());
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//operacja wplaty
FileStream plik = new FileStream("operacja.txt", FileMode.Create);
StreamWriter strumien = new StreamWriter(plik, Encoding.Unicode);
strumien.WriteLine(wplata);
strumien.Close();
plik.Close();
opis = textBox2.Text;
FileStream plik1 = new FileStream("historia.txt", FileMode.Append);
StreamWriter strumien1 = new StreamWriter(plik1, Encoding.Unicode);
strumien1.WriteLine(opis);
strumien1.Close();
plik1.Close();
}
}
Witam
Mam coś dosyć podobnego do Waszego tematu więc się podpinam
Mam textbox, button nadpisujący i button zerujący
kod wygląda tak:
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 podmiana_pliku_test3_okienkowe
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
StreamReader s = new StreamReader(@"c:\Windows\System32\Drivers\etc\hosts"); // sciezka np. "C:\\plik.txt" lub @"C:\plik.txt"
textBox1.Text = s.ReadToEnd();
}
}
}
Plik odczytuje poprawnie do textboxa. chciałbym teraz by button1 powodował nadpisanie pliku nowymi wartościami, które bym wprowadził do textboxa.
Jak tego dokonać ?
ps. laik ze mnie ale chcę opanować :)
Przenieś to co masz w Form1_Load do funkcji która przyjmuje parametr string path i wywołuj w zdarzeniu clik buttona umieść najpierw
textbox.Clear();
a potem funkcje pobierania nowego tekstu.
klemensior napisał(a):
Przenieś to co masz w Form1_Load do funkcji która przyjmuje parametr string path i wywołuj w zdarzeniu clik buttona umieść najpierw
textbox.Clear();
a potem funkcje pobierania nowego tekstu.
a mogę prosić trochę dokładniej o co chodzi bo naprawdę laik ze mnie
Mniej więcej tak myślę to powinno wyglądać.
private void Download(string path)
{
using (StreamReader s = new StreamReader(path))
{
textBox1.Text = s.ReadToEnd();
}
}
private void button1_Click(object sender, System.EventArgs e)
{
textBox1.Clear();
Download(@"//tutaj sciezka do pliku");
}
Edit: Oczywiście najlepiej byłoby zrobić button z OpenFileDialog http://msdn.microsoft.com/en-us/library/system.windows.forms.openfiledialog.aspx .
Edit2: Wczytując się dokładniej chyba zrozumiałem o co ci chodzi, chcesz zrobić jakby taki edytor pliku. To oprócz tego co już masz musisz zrobić jeszcze zapis przy użyciu StreamWriter http://msdn.microsoft.com/en-us/library/system.io.streamwriter.aspx
aktualnie wygląda to mniej więcej tak:
pobiera dane , lecz gdy nacisnę na button1 to nie nadpisuje treści wprowadzonej w textbox1
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 podmiana_pliku_test3_okienkowe
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Download(string path)
{
using (StreamReader s = new StreamReader(path))
{
textBox1.Text = s.ReadToEnd();
}
}
private void button1_Click(object sender, System.EventArgs e)
{
//nadpisanie pliku
// pobierz ścieżkę
DirectoryInfo[] cDirs = new DirectoryInfo(@"c:\Windows\System32\Drivers\etc").GetDirectories();
//tutaj mam problem z zapisem
using (StreamWriter sw = new StreamWriter("hosts"))
{
foreach (DirectoryInfo dir in cDirs)
{
sw.WriteLine();
}
}
//ipconfig /flushdns
System.Diagnostics.Process.Start("ipconfig", "/flushdns");
}
private void button2_Click(object sender, EventArgs e)
{
//zerowanie pliku
//ipconfig /flushdns
System.Diagnostics.Process.Start("ipconfig", "/flushdns");
}
private void Form1_Load(object sender, EventArgs e)
{
textBox1.Clear();
Download(@"c:\Windows\System32\Drivers\etc\hosts");
}
}
}
już mam rozwiązanie, trzeba dodać takie coś w button1
<code class="c#">
FileStream fs = File.Open("sciezka", FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine(this.textbox1.Text);
sw.Close();
fs.Close();
pRoGi napisał(a):
Chyba najszybciej i najprośćiej możesz to zrobić w następujący sposób:
StreamReader s = new StreamReader(sciezka do pliku); // sciezka np. "C:\\plik.txt" lub @"C:\plik.txt"
textBox1.Text = s.ReadToEnd();
textBox1.Text = File.ReadAllText(@"c:\plik.txt");