修改RichTextBox中的默认选项卡大小

Ada*_*ile 17 .net tabs richtextbox winforms

有没有办法更改.NET RichTextBox中的默认选项卡大小?它目前似乎设置为相当于8个空间,这对我来说有点大.

编辑:为了澄清,我想将全局默认值"\ t"显示为控件的4个空格.根据我的理解,SelectionTabs属性要求您先选择所有文本,然后通过数组选择选项卡宽度.如果必须,我会这样做,但我宁愿只更改一次全局默认值,如果可能的话,我不必每次都这样做.

Sco*_*ols 20

您可以通过设置SelectionTabs属性来设置它.

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

更新:
序列很重要....

如果在初始化控件文本之前设置选项卡,则不必在设置选项卡之前选择文本.

例如,在上面的代码中,这将使文本保留原始的8个空格制表位:

richTextBox1.Text = "\t1\t2\t3\t4";
richTextBox1.SelectionTabs = new int[] { 100, 200, 300, 400 };
Run Code Online (Sandbox Code Playgroud)

但这将使用新的:

richTextBox1.SelectionTabs = new int[] { 100, 200, 300, 400 };
richTextBox1.Text = "\t1\t2\t3\t4";
Run Code Online (Sandbox Code Playgroud)

  • 可能有用的是添加这些值是制表符*以像素为单位*而不是以字符为单位.它在[MSDN页面](http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.selectiontabs.aspx)中提到,但似乎有些违反直觉. (4认同)

Dan*_*n W 5

Winforms 没有用单个数字设置 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
}
Run Code Online (Sandbox Code Playgroud)

如果您需要将缇转换为像素,请使用以下受Convert Pixels to Points启发的代码:

int tabSize=720;
Graphics g = this.CreateGraphics();
int pixels = (int)Math.Round(((double)tabSize) / 1440.0 * g.DpiX);
g.Dispose();
Run Code Online (Sandbox Code Playgroud)