Jag har börjat lite med C# igen. Jag löste lite granna själv: Meddelanderutan: Då gör jag nägot tokigt, jag får inte till det: Så här kan du göra för att visa fel: Fel: Verkar som om du har koden i ett event (där e förmodligen redan är definierat) Nu fungerade detta:Öppna filer till richtextbox
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#Sv: Öppna filer till richtextbox
<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?)Sv: Öppna filer till richtextbox
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...Sv: Öppna filer till richtextbox
<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)Sv: Öppna filer till richtextbox
<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>Sv: Öppna filer till richtextbox
<code>
E:\C#-koder\MiniOrd\MiniOrd\Form1.cs(482): 'System.ComponentModel.CancelEventArgs' does not contain a definition for 'Message'
</code>
Bidde inte bra.Sv: Öppna filer till richtextbox
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>Sv: Öppna filer till richtextbox
<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.