Đặt điều khiển hộp văn bản WinForms với MultiLine = true
và AcceptsTab == true
, làm cách nào tôi có thể đặt chiều rộng của ký tự tab được hiển thị?Làm cách nào để đặt chiều rộng TAB trong điều khiển Hộp văn bản Windows Forms?
Tôi muốn sử dụng hộp này làm hộp nhập tập lệnh nhanh và dơ bẩn cho plugin. Nó thực sự không cần phải được ưa thích chút nào, nhưng nó sẽ được tốt đẹp nếu các tab không được hiển thị rộng 8 ký tự ...
Từ câu trả lời được chấp nhận:
// 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 });
}
này có thể được gọi trong hàm tạo của số Form
của bạn, nhưng hãy cẩn thận: Hãy chắc chắn rằng InitializeComponents
được chạy trước tiên.
Bạn cũng nên bỏ đồ họa, có thể đặt đồ họa vào sử dụng câu lệnh. –