|
|
|
|
RichTextBox |
Zyrus
Exil-Wessi
Dabei seit: 01.04.2003
Beiträge: 538
Herkunft: Around The World
|
|
RichTextBox |
|
Nabend zusammen,
ich habe ein Problem. Und zwar möchte ich gerne ein RTF - Dokument öffnen und in der RichTextBox anzeigen lassen, speichern, sowie das Änderungen automatisch erkannt werden.:
Das ist der Code, wenn man auf den "Open" - Button klickt.
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
|
Dim myOpenDialog As New OpenFileDialog()
myOpenDialog.DefaultExt = "*.rtf"
myOpenDialog.Filter = "RTF - Dateien | *.rtf"
If (myOpenDialog.ShowDialog = Windows.Forms.DialogResult.OK) And (myOpenDialog.FileName.Length > 0) Then
RTBox.LoadFile(myOpenDialog.FileName)
Label1.Text = myOpenDialog.SafeFileName
DateiName = myOpenDialog.SafeFileName
End If |
|
((Bitte meckert nicht rum, wegen dem Label1.Text und der Variablen DateiName, leider muss ich das bei Vista so regeln, sonst bekomme ich im SaveFileDialog das FileName nicht angezeigt))
So, alles schön und gut, es funktioniert auch, ich kann in die RichTextBox (hier als RTBox benannt) meinen Dateiinhalt anzeigen lassen.
Wenn auf den "Save"-Button geklickt wird, wird der folgende Code ausgeführt:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
|
Dim mySaveDialog As New SaveFileDialog()
mySaveDialog.FileName = DateiName
mySaveDialog.Filter = "RTF - Dateien | *.rtf"
If (mySaveDialog.ShowDialog = Windows.Forms.DialogResult.OK) And (mySaveDialog.FileName.Length > 0) Then
RTBox.SaveFile(mySaveDialog.FileName)
Label1.Text = "Saved!"
End If |
|
Die Datei wird dann auch gespeichert. Also funktioniert dieser Code ebenso.
Nun zu meinem eigentlichen Problem:
1. Ich öffne eine RTF - Datei
2. Der Dateiinhalt wird in der RichTextBox angezeigt
3. Wenn nun Änderungen am Text erfolgen, soll dieses (am besten automatisch) erkannt werden und wenn ich dann z.B. auf "Close" klicke oder auf "Open", soll eine MessageBox o.ä. "aufpoppen" und mich fragen ob ich die Änderungen speichern möchte, also wie z.B. bei Word.
Hat jemand eine Idee, wie ich dieses am besten bewerkstelligen kann ?
Entwicklungsumgebung: Visual Basic Express Edition 2008
Programm: Wie man sieht handelt es sich um eine einfache Übung mit Windows.Forms (.NET - Technologie)
Ich wäre über hilfreiche antworten sehr dankbar.
Greetz
Zyrus
__________________ Der Computer arbeitet deshalb so schnell, weil er nicht denkt.- Gabriel Laub -
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Zyrus: 25.08.2008 19:45.
|
|
25.08.2008 19:43 |
|
|
phlox81
Bote des Lichts und Moderator
Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo
|
|
Warum nimmst du überhaupt VB?
Denke du könntest mal in die Doku der Klasse schauen, evtl. hat RTBox eine Methode (Changed oder so), die dir das sagt.
In wxWidgets könnte das z.B. sein, in dem du CanUndo aufrufst, denn dann ist ja etwas gemacht worden.
http://docs.wxwidgets.org/stable/wx_wxri...#wxrichtextctrl
Aber ein Modified/Changed() hat diese Klasse auch nicht.
phlox
__________________ Intelligenz ist eine Illusion des Menschen
phlox81.de | codenode.de
|
|
25.08.2008 20:23 |
|
|
Zyrus
Exil-Wessi
Dabei seit: 01.04.2003
Beiträge: 538
Herkunft: Around The World
Themenstarter
|
|
|
25.08.2008 20:30 |
|
|
phlox81
Bote des Lichts und Moderator
Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo
|
|
Zitat: |
Original von Zyrus
Zitat: |
Original von phlox81
In wxWidgets könnte das z.B. sein, in dem du CanUndo aufrufst |
Sowas in der Art gibt es bei der RTBox in VB auch, nur genau dadurch geblickt bin ich nicht
..::EDIT::..
Zitat: |
Die TextBoxBase.Undo-Methode kann weder für das KeyPress-Ereignis noch für das TextChanged-Ereignis verwendet werden. |
http://msdn.microsoft.com/de-de/library/...box(VS.80).aspx
Was auch immer mir das nun sagen mag -.-
|
Hm, versuchs mal mit CanUndo, damit kannst du ja feststellen, ob es was zum Rückgängig machen gibt, und dann ist ja eine Änderung im Dokument.
phlox
__________________ Intelligenz ist eine Illusion des Menschen
phlox81.de | codenode.de
|
|
25.08.2008 20:42 |
|
|
Zyrus
Exil-Wessi
Dabei seit: 01.04.2003
Beiträge: 538
Herkunft: Around The World
Themenstarter
|
|
Zitat: |
Original von phlox81
Hm, versuchs mal mit CanUndo, damit kannst du ja feststellen, ob es was zum Rückgängig machen gibt, und dann ist ja eine Änderung im Dokument. |
Danke, Danke, Danke
Ich habe es nun (nur zum Testen) mal mit dem folgenden Code probiert, wenn man auf "Close" klickt:
code: |
1:
2:
3:
4:
|
If (RTBox.CanUndo = True) Then
MessageBox.Show("Möchten Sie vorm Schließen speichern?", "Hinweis", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If |
|
Danke nochmal
Greetz
Zyrus
__________________ Der Computer arbeitet deshalb so schnell, weil er nicht denkt.- Gabriel Laub -
|
|
25.08.2008 20:56 |
|
|
|
|
|
|