2008-09-30 42 views
13

有沒有什麼方法可以在.NET RichTextBox中更改默認選項卡大小? 它目前似乎設置爲相當於8個空間,這對我的口味來說有點大。修改RichTextBox中的默認選項卡大小

編輯:爲了澄清,我想將全局默認的「\ t」顯示設置爲控件的4個空格。根據我的理解,SelectionTabs屬性要求您先選擇所有文本,然後通過數組選擇寬度。如果必須的話,我會這樣做,但我寧願只改變一次全局默認值,如果可能的話,不要每次都這樣做。

回答

16

您可以通過設置SelectionTabs屬性來進行設置。

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

UPDATE:
序列事項....

如果設置初始化之前,該控件的文本標籤,那麼你沒有選擇的文本設置選項卡之前, 。

例如,在上面的代碼,這將保持與原來的8個空格選項卡中的文本停止:

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

但是,這將使用新的:沒有按

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

添加這些值可能是有用的,這些值是製表符*,以像素*而非字符。它在[MSDN頁面](http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.selectiontabs.aspx)中提到,但似乎有點違反直覺。 – JYelton 2012-10-11 16:17:11

1

的WinForms」 t有一個屬性可以用一個數字來設置RichTexBox的默認標籤大小,但是如果您準備深入研究富文本框的Rtf並修改它,可以使用一個名爲「\ deftab 」。之後的數字表示緹數(1點= 1/72英寸= 20緹)。與720個緹標準標籤的大小產生的RTF可能看起來是這樣的:

{\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 
} 

如果需要緹轉換爲像素,使用此代碼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

只用於顯示(只讀)固定間距文本的RTF框,最簡單的事情就是不要混亂Tab鍵。只需用空格替換它們的東西。

如果您希望用戶可以輸入內容並使用該Tab鍵前進,您也可以通過覆蓋OnKeyDown()並打印空格來捕獲Tab鍵。

+0

除非您有14pt空格,粗體空格或其他格式化的空格。 – 2015-01-08 13:41:28