給定一個帶有MultiLine = true
和AcceptsTab == true
的WinForms TextBox控件,如何設置顯示的製表符的寬度?如何在Windows窗體TextBox控件中設置TAB寬度?
我想用它作爲插件的快速和髒腳本輸入框。它真的不需要有想象力可言,但如果標籤沒有顯示爲寬8個字符就好......
從接受的答案:
// 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 });
}
這可以被稱爲您的Form
的構造函數,但要小心:確保InitializeComponents
先運行。
你也應該配置圖形,也許把它放在使用語句。 – 2012-05-16 07:16:40