Étant donné un contrôle WinForms TextBox avec MultiLine = true
et AcceptsTab == true
, comment puis-je définir la largeur du caractère de tabulation affiché? Je veux l'utiliser comme une boîte de saisie de script rapide et sale pour un plugin. Il n'a vraiment pas besoin d'être de fantaisie du tout, mais ce serait bien si les onglets ne sont pas affichés sous forme de 8 caractères large ...Comment définir la largeur TAB dans un contrôle Windows Forms TextBox?
De la réponse acceptée:
// 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 });
}
Cela peut être appelé le constructeur de votre Form
, mais attention: Assurez-vous que InitializeComponents
est exécuté en premier.
Vous devez également disposer des graphiques, peut-être le mettre en utilisant l'instruction. –