我想更改C#中的文本框中的插入符号,使其看起来更像在旧的DOS应用程序中那样。在C#中的文本框中更改插入符(光标)
我想:
using System.Runtime.InteropServices;
...
[DllImport("user32.dll")]
static extern bool CreateCaret(IntPtr hWnd, IntPtr hBitmap, int nWidth, int nHeight);
[DllImport("user32.dll")]
static extern bool ShowCaret(IntPtr hWnd);
...
public partial class Form1 : Form
{
[DllImport("user32.dll")]
static extern bool CreateCaret(IntPtr hWnd, IntPtr hBitmap, int nWidth, int nHeight);
[DllImport("user32.dll")]
static extern bool ShowCaret(IntPtr hWnd);
public Form1()
{
InitializeComponent();
}
private void Form1_Shown(object sender, EventArgs e)
{
CreateCaret(textBox1.Handle, IntPtr.Zero, 20, textBox1.Height);
ShowCaret(textBox1.Handle);
}
}
但它看起来一样。你能帮忙的话,我会很高兴。提前致谢!
编辑:
这只是一个例子。我的真实代码如下所示:
TextBox textbox = new TextBox();
textbox.MaxLength = fieldLength;
textbox.Width = fieldLength*24;
textbox.MaxLength = maxChars;
this.Controls.Add(textbox);
CreateCaret(textbox.Handle, IntPtr.Zero, 20, textbox.Height);
ShowCaret(textbox.Handle);
该代码被调用但不会更改任何内容。
EDIT2:
我试过的例子,它工作正常,但我的问题仍然exisits: 创建文本框时,我不能改变插入符。它只能用于使用表单创建的文本框。
如果有人正在阅读:我的问题的答案是,我在表单完全加载之前调用方法。 –