MultiLine = true
とAcceptsTab == true
のWinForms TextBoxコントロールを使用すると、表示されるタブ文字の幅はどのように設定できますか?WindowsフォームのTextBoxコントロールでTAB幅を設定する方法は?
これは、プラグインのための迅速で汚れたスクリプト入力ボックスとして使用したいと思います。これは、中に呼び出すことができ
// 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 });
}
:受け入れ答えから
...それは本当に全くの空想である必要はありませんが、タブは8つの文字幅として表示されていない場合、それはいいだろうForm
のコンストラクタですが、最初にInitializeComponents
が実行されていることを確認してください。
グラフィックスも同様に廃棄してください。おそらくステートメントを使用して配置してください。 –