DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

TextBoxやRichTextBoxのタブの幅を変更する

RichTextBoxであれば、SelectionTabsプロパティにより、タブの位置を設定することができます。ただしこれはタブの位置をピクセル単位で、数値型の配列として指定するものです。

SelectionTabsプロパティを使わないのであれば、Win32 APIを使うことになります。EM_SETTABSTOPSメッセージを使って、タブ幅の文字数を指定できます。

次の例では、Button1をクリックすることにより、TextBox1のタブの幅を16にしています。

VB.NET
コードを隠すコードを選択
<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
C#
コードを隠すコードを選択
[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 Tipsをご利用いただく際は、注意事項をお守りください。