2009-05-21 3 views
0

私はWindowsフォームアプリケーション(更新されたフレームワーク、ロジックの書き換えなど)を書き直しています。私はちょうど彼らがどうしたのか分かりません。 元のアプリケーションのテキストボックスには、次のように太い点滅カーソルがありました。http://screencast.com/t/8QYUcjuh3nWindowsフォーム:太字の点滅カーソルをテキストボックスに表示する方法は?

私の人生にとっては、これを行う方法を理解できません。助けてください?

答えて

1

あなたがPInvokeのCreateCaret

の例では、ボタン(ボタン1)とテキストボックス(textBox1テキストボックス)とのWinフォームを使用してそれを行うことができます。

[DllImport("user32.dll")] 
static extern bool CreateCaret(IntPtr hWnd, IntPtr hBitmap, int nWidth, int nHeight); 
[DllImport("user32.dll")] 
static extern bool ShowCaret(IntPtr hWnd); 

は、ボタンのクリックイベントにこのコードを追加します。:

// Thickness is set where I have 10. 
    CreateCaret(textBox1.Handle, IntPtr.Zero, 10, textBox1.Height); 
    ShowCaret(textBox1.Handle); 

ボタンあなた」をクリックすると

using System.Runtime.InteropServices; 

は、これらの宣言を追加します。

はこのusingディレクティブを追加します。より厚いカーソルを得るでしょう。

また、hereについての議論もあります。

+0

すごくおかげさま...私は検索するものを知っているので、私は彼らがこれをどのように呼び出すか見る。実際には...これは確かに毎日WTFの勝者です –

+0

問題ありません。残念ながら私のために私のWTFは毎日以上です! –

+0

実際には、私はこれに問題がある、それはコントロールハンドルとフォームが異なるスレッドで作成されるように思われる。したがって、クロススレッド例外を発生させます。 –

関連する問題