如何在Windows窗口TextBox控件中设置TAB宽度?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (40)

给定一个MultiLine = true和AcceptsTab == true的WinForms TextBox控件,如何设置显示的制表符的宽度?

提问于
用户回答回答于
// set tab stops to a width of 4
private const int EM_SETTABSTOPS = 0x00CB;

[DllImport("User32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr SendMessage(IntPtr h, int msg, int wParam, int[] lParam);

public static void SetTabWidth(TextBox textbox, int tabWidth)
{
    Graphics graphics = textbox.CreateGraphics();
    var characterWidth = (int)graphics.MeasureString("M", textbox.Font).Width;
    SendMessage(textbox.Handle, EM_SETTABSTOPS, 1, 
                new int[] { tabWidth * characterWidth });
}

用户回答回答于

可以改用RichTextBox,那么可以使用SelectedTabs属性来设置所需的标签宽度:

richTextBox.SelectionTabs = new int[] { 15, 30, 45, 60, 75};

请注意,这些偏移量是像素,而不是字符。

扫码关注云+社区