0

テキストボックスの点滅キャレットをコマンドラインスタイルのキャレットに変更するにはどうすればよいですか。テキストボックスの水平カーソル。

4

3 に答える 3

2

以下のコードをお試しください

[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, 10, textBox1.Height);
    ShowCaret(textBox1.Handle);
}
于 2012-10-06T16:12:23.900 に答える
1

以下のサンプルコードをお試しください。

this.Cursors = Cursor.None;
this.cursors = cursor.pointer or cursor.arrow
于 2012-10-06T14:27:38.363 に答える
0

次のようなコードを使用して動作するようにしました (Prabhakantha に感謝します)。テキストボックスの Enter イベントを処理した後、タイマーを使用してカーソルを設定する必要がありました。

    private void textBox1_Enter(object sender, EventArgs e)
    {
        timer1.Enabled = true;
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        timer1.Enabled = false;
        CreateCaret(textBox1.Handle, IntPtr.Zero, 6, textBox1.Height);
        ShowCaret(textBox1.Handle);
    }

ただし、これは少しハックのようです。もっと良い方法があるはずです。

于 2012-10-08T19:25:34.817 に答える