RichTextBoxであれば、SelectionTabsプロパティにより、タブの位置を設定することができます。ただしこれはタブの位置をピクセル単位で、数値型の配列として指定するものです。
SelectionTabsプロパティを使わないのであれば、Win32 APIを使うことになります。EM_SETTABSTOPSメッセージを使って、タブ幅の文字数を指定できます。
次の例では、Button1をクリックすることにより、TextBox1のタブの幅を16にしています。
<System.Runtime.InteropServices.DllImport("User32.dll")> _
Shared Function SendMessage(ByVal hWnd As IntPtr, _
ByVal msg As Integer, ByVal wParam As Integer, _
ByVal lParam() As Integer) As IntPtr
End Function
Private Sub Button1_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Const EM_SETTABSTOPS As Integer = &HCB
SendMessage(TextBox1.Handle, EM_SETTABSTOPS, 1, New Integer() {16})
End Sub
[System.Runtime.InteropServices.DllImport("User32.dll")]
static extern IntPtr SendMessage(
IntPtr hWnd, int msg, int wParam, int [] lParam);
private void Button1_Click(object sender, System.EventArgs e)
{
const int EM_SETTABSTOPS = 0x00CB;
SendMessage(TextBox1.Handle, EM_SETTABSTOPS, 1, new int[] {16});
}
(この記事は、「.NETプログラミング研究」で紹介したものを基にしています。)
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。