有沒有什麼方法可以在.NET RichTextBox中更改默認選項卡大小? 它目前似乎設置爲相當於8個空間,這對我的口味來說有點大。修改RichTextBox中的默認選項卡大小
編輯:爲了澄清,我想將全局默認的「\ t」顯示設置爲控件的4個空格。根據我的理解,SelectionTabs屬性要求您先選擇所有文本,然後通過數組選擇寬度。如果必須的話,我會這樣做,但我寧願只改變一次全局默認值,如果可能的話,不要每次都這樣做。
有沒有什麼方法可以在.NET RichTextBox中更改默認選項卡大小? 它目前似乎設置爲相當於8個空間,這對我的口味來說有點大。修改RichTextBox中的默認選項卡大小
編輯:爲了澄清,我想將全局默認的「\ t」顯示設置爲控件的4個空格。根據我的理解,SelectionTabs屬性要求您先選擇所有文本,然後通過數組選擇寬度。如果必須的話,我會這樣做,但我寧願只改變一次全局默認值,如果可能的話,不要每次都這樣做。
您可以通過設置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";
的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();
只用於顯示(只讀)固定間距文本的RTF框,最簡單的事情就是不要混亂Tab鍵。只需用空格替換它們的東西。
如果您希望用戶可以輸入內容並使用該Tab鍵前進,您也可以通過覆蓋OnKeyDown()
並打印空格來捕獲Tab鍵。
除非您有14pt空格,粗體空格或其他格式化的空格。 – 2015-01-08 13:41:28
添加這些值可能是有用的,這些值是製表符*,以像素*而非字符。它在[MSDN頁面](http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.selectiontabs.aspx)中提到,但似乎有點違反直覺。 – JYelton 2012-10-11 16:17:11