如何将richtextbox的数据与列对齐

时间:2015-04-06 04:52:31

标签: c#

这是我要对齐的数据示例。

enter image description here

我读到了

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

但我无法理解它。 msdn的描述有点过于模糊。 { 100, 200, 300, 400 }是什么意思?我认为这是像素大小,但我如何修改它以满足我的需求?

2 个答案:

答案 0 :(得分:1)

是的,确实SelectionTabs是一个数组,其中每个成员指定制表符偏移量(以像素为单位)。数字表示左边距的宽度。

示例:

richTextBox1.SelectionTabs = new int[] { 100, 200, 300, 400 };

第一个标签后的文字将从左边距排列100px。 第二个选项卡后面的文本将从左边距分配200px。 ... 这些设置适用于每一行。

这就是您的RichTextBox控件必须定义了特定Width的原因。对于该宽度,您需要定义5个选项卡。

另请注意,SelectionTabs属性仅适用于所选文本。这就是为什么你需要首先选择整个文本的额外代码,然后设置SelectionTabs属性。

以下示例适用于您的方案:

richTextBox1.Width = 580;
            richTextBox1.Text =
                "24,34\t1228\tC:\\14035/61439\tD:\\399175/415186\t01 02 03 04 05 06 07 08 09 10 11\t0 1 2 3 " +
                "58,05\t4017\tC:\\5610/61439\tD:\\396629/415186\t10 11 12 13 14 15\t0 1 2";
            richTextBox1.SelectAll();
            richTextBox1.SelectionTabs = new int[] {50, 100, 200, 320, 530};
            richTextBox1.AcceptsTab = true;
            richTextBox1.Select(0, 0);

答案 1 :(得分:0)

或者:

private void Form1_Load(object sender, EventArgs e)
    {
       // richTextBox1.Width = 480;
        richTextBox1.Text =
            "value1\tvalue2\tvalue3\tvalue4\tvalue5\tvalue6\n" +
            "value1\tvalue2\tvalue3\tvalue4\tvalue5\tvalue6\n" +
            "value1\tvalue2\tvalue3\tvalue4\tvalue5\tvalue6\n" +
            "value1\tvalue2\tvalue3\tvalue4\tvalue5\tvalue6";

        richTextBox1.SelectAll();
        //------------------------------------- value1
        //------------------------------------------ value2
        //----------------------------------------------- value3
        //---------------------------------------------------- value4
        //--------------------------------------------------------- value5
        richTextBox1.SelectionTabs = new int[] { 50, 100, 150, 200, 250 };
        //-----------------------------------------------------------------
        richTextBox1.AcceptsTab = true;
        richTextBox1.Select(0, 0);
    }