Re: *.dat Datei öffnen



> Ich habe in meinem Prog. eine Combobox, dessen inhalt in eine Datei
> (namen.dat) geschrieben wird. Diese Datei kann man mit dem WordPad öffnen
> und
> bearbeiten.
>
> Kann man es irgentwie hinkriegen, das ich einen Button in meine Toolbar
> setzte, womit diese Datei direkt in WordPad geöffnet wird, ohne erst mit
> "datei öffnen" im Pad diese zu laden???
> Danke im vorraus!

IMHO, falscher Ansatz. Wenn Du lediglich den Inhalt der ComboBox in einer
Datei speicherst, solltest auch nur maximal einen reinen
Texteditor(Notepad.exe) öffnen, da Formatierungen, die in anderen
Editoren(Wordpad.exe) ggf.gespeichert werden könnten, damit ist die Datei
als Quelle für die ComboBox unbrauchbar.
Wenn Du das schon mit einer Text-Datei lösen willst, dann erstelle einfach
ein Formular mit einer TextBox(Multiline = True), dort lädst Du die Datei
hinein. Beim Speichern durchläufst Du einfach die Lines-Auflistung und
speicherst die einzelnen Lines. Danach wird der Inhalt der Datei wieder an
die ComboBox angeglichen.

Ich würde aber eine DataTable als Datenquelle für die ComboBox nutzen und
diese serialisieren/ deserialisieren. Folgendes Beispiel benötigt eine
ComboBox(ComboBox1), eine TextBox(TextBox1) und einen Button(Button1):
\\\
Private dt As New DataTable("ComboBox")
Private fileName As String = "C:\Temp\Test.xml"

Private Sub FRM_Main_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim dr As DataRow
If IO.File.Exists(fileName) Then
Dim StreamRead As IO.Stream = IO.File.OpenRead(fileName)
Dim deserializer As New
System.Runtime.Serialization.Formatters.Soap.SoapFormatter
dt = DirectCast(deserializer.Deserialize(StreamRead), DataTable)
StreamRead.Close()
'dt.Columns.Add("Display")
'Call Read(fileName)
Else
dt.Columns.Add("Display")
dr = dt.NewRow
dr("Display") = "Entry 1"
dt.Rows.Add(dr)
dr = dt.NewRow
dr("Display") = "Entry 2"
dt.Rows.Add(dr)
End If

ComboBox1.DataSource = dt
ComboBox1.DisplayMember = "Display"

Button1.Text = "Akualisieren"
TextBox1.Multiline = True
TextBox1.Text = ""
For Each dr In dt.Rows
TextBox1.Text &= dr("Display").ToString & vbCrLf
Next
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
dt.Rows.Clear()
For Each line As String In TextBox1.Lines
Dim dr As DataRow = dt.NewRow
dr("Display") = line
dt.Rows.Add(dr)
Next
End Sub

Private Sub FRM_Main_Closed(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Closed
Dim StreamWrite As IO.Stream = IO.File.OpenWrite(fileName)
Dim serializer As New
System.Runtime.Serialization.Formatters.Soap.SoapFormatter
serializer.Serialize(StreamWrite, dt)
StreamWrite.Close()
'Call Write(fileName)
End Sub
///
Wenn Du kein XML-File gebrauchen kannst, tausch einfach den Serializer/
Deserializer gegen eine IO-Operarion aus, die Dir die Datei sequentiell
schreibt/ einliest. Dazu die Kommentare rückgängig machen und die
Serializer/ Deserializer-Anweisung auskommentieren:
\\\
Private Sub Read(ByVal fileName As String)
Dim SR As New IO.StreamReader(IO.File.OpenRead(fileName))
Dim dr As DataRow
Do Until SR.Peek = -1
dr = dt.NewRow
dr("Display") = SR.ReadLine
dt.Rows.Add(dr)
Loop
SR.Close()
End Sub

Private Sub Write(ByVal fileName As String)
Dim SW As New IO.StreamWriter(IO.File.OpenWrite(fileName))
For Each dr As DataRow In dt.Rows
SW.WriteLine(dr("Display"))
Next
SW.Close()
End Sub
///
--
Gruß Scotty


.