BlackBoard » Design, Programmierung & Entwicklung » Programmieren » VB RichTextBox » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen RichTextBox
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Zyrus Zyrus ist männlich
Exil-Wessi


images/avatars/avatar-2286.gif

Dabei seit: 01.04.2003
Beiträge: 538
Herkunft: Around The World

RichTextBox       Zum Anfang der Seite springen

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 Zyrus ist offline E-Mail an Zyrus senden Beiträge von Zyrus suchen
phlox81 phlox81 ist männlich
Bote des Lichts und Moderator


images/avatars/avatar-2264.jpg

Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo

      Zum Anfang der Seite springen

Warum nimmst du überhaupt VB? großes Grinsen Augenzwinkern

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 phlox81 ist offline E-Mail an phlox81 senden Homepage von phlox81 Beiträge von phlox81 suchen
Zyrus Zyrus ist männlich
Exil-Wessi


images/avatars/avatar-2286.gif

Dabei seit: 01.04.2003
Beiträge: 538
Herkunft: Around The World

Themenstarter Thema begonnen von Zyrus
      Zum Anfang der Seite springen

Zitat:
Original von phlox81
Warum nimmst du überhaupt VB? großes Grinsen Augenzwinkern


Ha, ich habe es mir nicht ausgesucht, haben momentan VB in der Ausbildung.

Zitat:
Original von phlox81
Denke du könntest mal in die Doku der Klasse schauen, evtl. hat RTBox eine Methode (Changed oder so), die dir das sagt.


Die Change - Methode tritt nur als Private Sub auf, wenn man die RTBox doppelt in der GUI klickt. Eine direkte Text_Change - Methode hat das Steuerelement leider nicht.

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 unglücklich

..::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 -.-

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 20:33.

25.08.2008 20:30 Zyrus ist offline E-Mail an Zyrus senden Beiträge von Zyrus suchen
phlox81 phlox81 ist männlich
Bote des Lichts und Moderator


images/avatars/avatar-2264.jpg

Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo

      Zum Anfang der Seite springen

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 unglücklich

..::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 phlox81 ist offline E-Mail an phlox81 senden Homepage von phlox81 Beiträge von phlox81 suchen
Zyrus Zyrus ist männlich
Exil-Wessi


images/avatars/avatar-2286.gif

Dabei seit: 01.04.2003
Beiträge: 538
Herkunft: Around The World

Themenstarter Thema begonnen von Zyrus
      Zum Anfang der Seite springen

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 smile

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 Augenzwinkern

Greetz

Zyrus

__________________
Der Computer arbeitet deshalb so schnell, weil er nicht denkt.- Gabriel Laub -
25.08.2008 20:56 Zyrus ist offline E-Mail an Zyrus senden Beiträge von Zyrus suchen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
BlackBoard » Design, Programmierung & Entwicklung » Programmieren » VB RichTextBox

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH