有没有什么方法可以在.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