Öppna filer till richtextbox
Jag har börjat lite med C# igen.
Lite fundering, enligt en bok jag har skall man kunna öppnaen fil till richtextbox så här:
<code>
filnamn=openFileDialog1.FileName;
rText.LoadFile(filnamn);
</code>
Detta fungerar ju så långe som det är rtf-filer.
Men om jag nu vill titta på en annan fil, txt,doc osv då får jag bara fel.
Två frågor:
1)
Hur kan jag göra för att titta på andra filer?
2)
Hur kan jag göra för att få med error i msgboxen?
I vb kunde jag skriva så här:
<code>
msgbox "Fel: " & err.number & " " & err.desciption
</code>
Jag antar att det finns ett liknande sätt i C#
Svara
Sv: Öppna filer till richtextbox
Jag löste lite granna själv:
<code>
System.IO.StreamReader sr = new
System.IO.StreamReader(openFileDialog1.FileName);
filnamn=openFileDialog1.FileName;
rText.Text= sr.ReadToEnd();
sr.Close();
this.Text = "MiniOrd - " + filnamn;
</code>
Men hur kan jag förändra min kod, om jag dessutom vill kunna läsa in texten binary?
(Går det?)
Svara
Sv: Öppna filer till richtextbox
Meddelanderutan:
System.Windows.Forms.MessageBox.Show(parametrar)
Jag kommer inte ihåg vilka paramterar det var, du får kolla, det är i alla fall MessageBox-klassen med några parametrar...
Du kan läsa in en text-fil för hand och stoppa in den i text-parameterna antar jag... Om du skall visa binary så får du köra replace på alla nulls till nå't annat tecken...
.doc går inte att läsa då filformatet inte liknar rtf på något sätt...
Svara
Sv: Öppna filer till richtextbox
Då gör jag nägot tokigt, jag får inte till det:
<code>
filnamn=openFileDialog1.FileName;
FileStream fs = new FileStream(filnamn, FileMode.CreateNew);
fs = new FileStream(filnamn, FileMode.Open, FileAccess.Read);
BinaryReader r = new BinaryReader(fs);
for (int i = 0; i < 11; i++)
{
rText.Text= r.ReadString().Replace(null,"");
}
fs.Close();
</code>
Att MessageBox skall skrivas:
<code>
MessageBox.Show("Ett fel har inträffat.","Fel vid öppnande av dokument",MessageBoxButtons.OK,MessageBoxIcon.Error);
</code>
Det vet jag, men jag ville hänga på felbeskrivning(läs err.number err.desciption)
Svara
Sv: Öppna filer till richtextbox
Så här kan du göra för att visa fel:
<code>
System.IO.StreamReader sr =null;
try
{
sr= new
System.IO.StreamReader(openFileDialog1.FileName);
filnamn=openFileDialog1.FileName;
rText.Text= sr.ReadToEnd();
sr.Close();
this.Text = "MiniOrd - " + filnamn;
}
catch(Exception e)
{
MessageBox.Show("Fel:" + e.Message);
}
finally
{
if(sr!=null)sr.Close();
}
</code>
Svara
Sv: Öppna filer till richtextbox
Fel:
<code>
E:\C#-koder\MiniOrd\MiniOrd\Form1.cs(482): 'System.ComponentModel.CancelEventArgs' does not contain a definition for 'Message'
</code>
Bidde inte bra.
Svara
Sv: Öppna filer till richtextbox
Verkar som om du har koden i ett event (där e förmodligen redan är definierat)
Testa att byta ut
<code>
catch(Exception e)
{
MessageBox.Show("Fel:" + e.Message);
}
</code>
till
<code>
catch(Exception err)
{
MessageBox.Show("Fel:" + err.Message);
}
</code>
Svara
Sv: Öppna filer till richtextbox
Nu fungerade detta:
<code>
catch(Exception err)
{
MessageBox.Show("Ett fel har inträffat:" + err.Message ,"Fel vid öppnande av font",MessageBoxButtons.OK,MessageBoxIcon.Error );
}
</code>
Men det som jag försöker med nu är:
<code>
filnamn=openFileDialog1.FileName;
FileStream fs = new FileStream(filnamn, FileMode.CreateNew);
fs = new FileStream(filnamn, FileMode.Open, FileAccess.Read);
BinaryReader r = new BinaryReader(fs);
for (int i = 0; i < 11; i++)
{
rText.Text= r.ReadString().Replace(null,"");
}
fs.Close();
</code>
Felet jag får är:
filen finns redan.
Det innebär ju att jag ligger helt fel i koden.
Svara