2008-09-30 15 views
13

Czy istnieje sposób na zmianę domyślnego rozmiaru tabulatora w .NET RichTextBox? Wydaje się, że obecnie jest ustawiony na odpowiednik 8 pól, co jest dość duże jak na mój gust.Modyfikowanie domyślnego rozmiaru tabulatora w RichTextBox

Edytuj: Aby wyjaśnić, chcę ustawić globalną wartość domyślną "\ t" jako 4 spacje dla kontrolki. Z tego, co rozumiem, właściwość SelectionTabs wymaga wybrania najpierw całego tekstu, a następnie szerokości tabulatora za pośrednictwem tablicy. Zrobię to, jeśli będę musiał, ale wolałbym po prostu zmienić globalne domyślne raz, jeśli to możliwe, sot, że nie muszę tego robić za każdym razem.

Odpowiedz

16

Można ustawić, ustawiając właściwość SelectionTabs.

private void Form1_Load(object sender, EventArgs e) 
{ 
    richTextBox1.SelectionTabs = new int[] { 100, 200, 300, 400 }; 
} 

UPDATE:
liczy Sekwencja ....

Jeśli ustawisz wypustki przed tekstem kontrolki inicjowany, wtedy nie trzeba zaznaczyć tekst przed ustawiania zakładek .

Na przykład, w powyższym kodzie, to zachowa tekst z oryginalnej karcie 8 miejsc przystanków:

richTextBox1.Text = "\t1\t2\t3\t4"; 
richTextBox1.SelectionTabs = new int[] { 100, 200, 300, 400 }; 

Ale to użyje nowe:

richTextBox1.SelectionTabs = new int[] { 100, 200, 300, 400 }; 
richTextBox1.Text = "\t1\t2\t3\t4"; 
+3

Warto dodać, że wartościami tymi są tabulatory * w pikselach * zamiast w znakach. Jest on wymieniony na stronie [MSDN] (http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.selectiontabs.aspx), ale wydaje się nieco sprzeczny z intuicją. – JYelton

1

WinForms robi” • mieć właściwość do ustawienia domyślnego rozmiaru zakładki RichTexBox za pomocą jednego numeru, ale jeśli jesteś gotów zagłębić się w Rtf w polu tekstu sformatowanego i zmienić to ustawienie, możesz użyć polecenia o nazwie: "\ deftab ". Liczba później oznacza liczbę punktów (1 punkt = 1/72 cala = 20 twipów). Powstały RTF ze standardowej wielkości zakładki 720 twipsach mógłby wyglądać następująco:

{\rtf1\ansi\ansicpg1252\deff0\deflang2057\deftab720{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}} 
\viewkind4\uc1\pard\f0\fs41 
1\tab 2\tab 3\tab 4\tab 5\par 
} 

Jeśli trzeba konwertować twipów w pikselach użyć tego kodu inspirowany od Convert Pixels to Points:

int tabSize=720; 
Graphics g = this.CreateGraphics(); 
int pixels = (int)Math.Round(((double)tabSize)/1440.0 * g.DpiX); 
g.Dispose(); 
0

Jeśli masz Pole RTF, które służy tylko do wyświetlania tekstu (tylko do odczytu) o stałej wysokości, najłatwiej byłoby nie zawadzać o tabulatory. Po prostu zamień je na spacje.

Jeśli chcesz, aby użytkownik mógł wprowadzić coś i użyć klawisza Tab, aby przejść dalej, możesz także uchwycić klawisz Tab, zastępując OnKeyDown() i drukować spacje.

+0

Chyba, że ​​masz 14pt spacji, pogrubione spacje lub inaczej sformatowane spacje. –

+0

Masz rację. Zapomniałem wspomnieć, że ma to sens głównie dla edytorów kodu używających "Courier New" i tylko jednego rozmiaru czcionki. W "Courier New" pogrubiona przestrzeń ma taką samą szerokość jak normalna przestrzeń. Ale jeśli używasz czcionek o zmiennym tonie lub różnych rozmiarów czcionek, nie byłoby dobrym pomysłem zastępowanie kart spacjami. – Elmue

Powiązane problemy