Używam RichTextBox w WinForms 3.5 i odkryłem, że kiedy programowo edytuję tekst, zmiany te nie są już dostępne dla wbudowanej funkcji cofania..NET RichTextBox undo
Czy istnieje sposób, aby te zmiany były dostępne do cofnięcia/ponowienia?
Używam RichTextBox w WinForms 3.5 i odkryłem, że kiedy programowo edytuję tekst, zmiany te nie są już dostępne dla wbudowanej funkcji cofania..NET RichTextBox undo
Czy istnieje sposób, aby te zmiany były dostępne do cofnięcia/ponowienia?
Oto tylko niektóre kod postanowiłem poeksperymentować z:
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";
}
Jest to w zasadzie mi pisać własną funkcję Cofnij. Wszystko, co robię, to przechowywanie starej wartości w jednej zmiennej buforowej i nowej wartości w drugiej zmiennej buforowej. Za każdym razem, gdy tekst się zmienia, wartości te są aktualizowane. Następnie, jeśli użytkownik kliknie "CTRL-Z", zastępuje tekst starą wartością. Włamać się? Trochę. Ale działa w przeważającej części.
Prawdopodobnie chciałbyś zamiast tego listy przedmiotów, pozwalającej na wielokrotne cofanie naciśnięć klawiszy, a jeśli chcesz przejść całą drogę, to możesz również stworzyć powtórzenie – Oskar
czy masz na myśli "programowo"? :) –
haha .... tak, zdecydowanie oznaczało programowo –