Dato un controllo TextBox WinForms con MultiLine = true
e AcceptsTab == true
, come è possibile impostare la larghezza del carattere di tabulazione visualizzata?Come impostare la larghezza del TAB in un controllo TextBox di Windows Form?
Voglio usare questo come una casella di input di script veloce e sporco per un plugin. E 'davvero non ha bisogno di essere di fantasia a tutti, ma sarebbe bello se le schede non sono stati visualizzati come larga 8 caratteri ...
Dalla risposta accettata:
// 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 });
}
Questo può essere chiamato in il costruttore del tuo Form
, ma attenzione: assicurati che InitializeComponents
venga eseguito per primo.
È necessario disporre anche di elementi grafici, magari inserirli nell'istruzione. –