Frage

Ich bin mit einem RichTextBox in WinForms 3.5 und ich fand, dass, wenn ich den enthaltenen Text programmatisch bearbeiten, diese Änderungen sind nicht mehr auf den in Undo-Funktionalität gebaut zur Verfügung.

Gibt es eine Möglichkeit, es zu machen, damit diese Änderungen für Rückgängig verfügbar sind / Redo?

War es hilfreich?

Lösung

Hier sind nur einige Code, den ich mess entschieden um mit:

        string buffer = String.Empty;
        string buffer2 = String.Empty;
        public Form3()
        {
            InitializeComponent();
            this.richTextBox1.KeyDown += new KeyEventHandler(richTextBox1_KeyDown);
            this.richTextBox1.TextChanged += new EventHandler(richTextBox1_TextChanged);
        }

        void richTextBox1_TextChanged(object sender, EventArgs e)
        {
            buffer2 = buffer;
            buffer = richTextBox1.Text;
        }

        void richTextBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Control && e.KeyCode == Keys.Z)
            {
                this.richTextBox1.Text = buffer2;
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            richTextBox1.Text = "Changed";
        }

Es ist im Grunde das Schreiben mir meine eigene Undo-Funktion. Alle in einem Puffergröße den alten Wert speichern ich tue, und den neuen Wert in einem zweiten Puffervariable. Jedes Mal, wenn der Text ändert, erhalten diese Werte zu aktualisieren. Wenn dann der Benutzer trifft „STRG + Z“ ersetzt er den Text mit dem alten Wert. Hacken? Ein wenig. Aber es funktioniert in den meisten Fällen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top