[英]How do I change the tab stop length for a textbox in visual studio?
I am making a code editor program for an old pocket PC I have, and I want to be able to change the size of the \\t
character in a multi-line textbox. 我正在为旧的袖珍PC编写代码编辑器程序,并且希望能够在多行文本框中更改
\\t
字符的大小。
I have looked for a really long time and I found this EM_SETTABSTOPS
which I am not entirely sure how to use that but I think it is what I need to use. 我已经寻找了很长时间,我发现了这个
EM_SETTABSTOPS
,我不确定如何使用它,但我认为这是我需要使用的。 Is this even possible to do? 这有可能吗?
In your form class code: 在您的表单类代码中:
private const UInt32 EM_SETTABSTOPS = 0x00CB;
private const int unitsPerCharacter = 4;
[DllImport("CoreDll.dll")]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, ref IntPtr lParam);
then add a function 然后添加一个功能
public static void SetTextBoxTabStopLength(TextBox tb, int tabSizeInCharacters)
{
// 1 means all tab stops are the the same length
// This means lParam must point to a single integer that contains the desired tab length
const uint regularLength = 1;
// A dialog unit is 1/4 of the average character width
int length = tabSizeInCharacters * unitsPerCharacter;
// Pass the length pointer by reference, essentially passing a pointer to the desired length
IntPtr lengthPointer = new IntPtr(length);
SendMessage(tb.Handle, EM_SETTABSTOPS, (IntPtr)regularLength, ref lengthPointer);
}
Then, after InitializeComponents(), call the function with your multiline textbox. 然后,在InitializeComponents()之后,使用多行文本框调用该函数。
Source: http://www.pinvoke.net/default.aspx/user32.sendmessage 资料来源: http : //www.pinvoke.net/default.aspx/user32.sendmessage
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.