를 사용하면 Microsoft Winform controls아래에서 설명 할 약간의 해결 방법없이 문제를 올바르게 해결할 수 없습니다.
문제
단순히 사용에 문제 "\t"또는 vbTab하나 이상의 텍스트 상자가 표시되고 그 정렬이 모든 텍스트 상자에 대해 존중해야 할 경우, 유일한 것입니다 "\t"또는 vbTab솔루션이 항상 올바르게 정렬되지 않습니다 무언가를 표시합니다.
VB.Net의 예 :
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
TextBox1.Text = "Bernard" + vbTab + "32"
TextBox2.Text = "Luc" + vbTab + "47"
TextBox3.Text = "François-Victor" + vbTab + "12"
End Sub
표시됩니다

보시다시피,에 age대한 값 François-Victor은 오른쪽으로 이동하고 age다른 두 개의 TextBox의 값과 정렬되지 않습니다 .
해결책
이 문제를 해결하려면 SendMessage()아래와 같이 특정 user32.dll API 함수를 사용하여 탭 위치를 설정해야합니다 .
Public Class Form1
Public Declare Function SendMessage _
Lib "user32" Alias "SendMessageA" _
( ByVal hWnd As IntPtr _
, ByVal wMsg As Integer _
, ByVal wParam As Integer _
, ByVal lParam() As Integer _
) As Integer
Private Const EM_SETTABSTOPS As Integer = &HCB
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim tabs() As Integer = {4 * 25}
TextBox1.Text = "Bernard" + vbTab + "32"
SendMessage(TextBox1.Handle, EM_SETTABSTOPS, 1, tabs)
TextBox2.Text = "Luc" + vbTab + "47"
SendMessage(TextBox2.Handle, EM_SETTABSTOPS, 1, tabs)
TextBox3.Text = "François-Victor" + vbTab + "12"
SendMessage(TextBox3.Handle, EM_SETTABSTOPS, 1, tabs)
End Sub
End Class
다음 양식이 표시됩니다

이제 모든 값이 올바르게 정렬되었음을 알 수 있습니다 :-)
비고
MultilineTextBox의 속성은 True로 설정해야합니다 . 이 속성이 False로 설정되어 있으면 탭이 이전과 같이 배치됩니다.
AcceptsTab속성이 할당되는 방법 은 중요하지 않습니다 (테스트했습니다).
이 질문은 이미 StackOverflow에서 처리되었습니다.
주의 : 탭 위치 측정 단위는 문자가 아니라 문자의 1/4 인 것으로 보입니다. 그렇기 때문에 길이에 4를 곱한 것입니다.
C # 솔루션
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
[DllImport("User32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr SendMessage(IntPtr h, int msg, int wParam, uint[] lParam);
private const int EM_SETTABSTOPS = 0x00CB;
private const char vbTab = '\t';
public Form1()
{
InitializeComponent();
var tabs = new uint[] { 25 * 4 };
textBox1.Text = "Bernard" + vbTab + "32";
SendMessage(textBox1.Handle, EM_SETTABSTOPS, 1, tabs);
textBox2.Text = "Luc" + vbTab + "47";
SendMessage(textBox2.Handle, EM_SETTABSTOPS, 1, tabs);
textBox3.Text = "François-Victor" + vbTab + "12";
SendMessage(textBox3.Handle, EM_SETTABSTOPS, 1, tabs);
}
}
}