2008-09-30 62 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