1

Windows フォームを作成し、入力にテキスト ボックス コントロールを使用していますが、テキスト ボックスなどの境界線やその他のレイアウトなしで使用するのが好きです。下線と点滅カーソルを使用したいだけです。

私はborderStyle ( Fixed3D 、 None)、backcolor = InactiveBorderなどで遊んだ.しかし、私はまだ下線取得 ます... __ _ __ _ __ _

Backcolor=InactiveBorder と BorderStyle=None を使用しても問題ないと思いますが、下線と点滅カーソルを取得するにはどうすればよいですか?

要件:

  • 点滅するカーソルと下線。(デフォルトでは点滅しません。縦線が表示されるだけです))
4

5 に答える 5

1

これを偽装するには、テキスト ボックスの下にラベルを追加して、内容を_____________________. 私の好みの解決策は、線を描くだけの単純なカスタム コントロールを作成することです。

システムのキャレットはデフォルトで点滅しませんか? フォーカスがテキストボックスにある場合、私のシステムではそうです。

デフォルトでキャレットが点滅しない場合は、Windows コントロール パネルに移動し、キーボード設定を確認してください。ここで、キャレットの点滅速度を調整できます。

于 2013-04-04T09:40:18.717 に答える
0

これを行うには、カスタム コントロールを作成することをお勧めします (これは、提供されているコントロール クラスの 1 つから継承することにより、WinForms の世界で実現されます)。そのカスタム コントロールは次のようになります。

  1. OnPaint下線を描画し、表示したくないもの (コントロールの境界線など) の描画をスキップするために、( をオーバーライドして) 独自の描画ロジックを提供します。

  2. フォーカスを受け取ったときに独自のキャレットを作成し、フォーカスを失ったときにそのキャレットを破棄します。これを行う方法の詳細については、こちらの回答をご覧ください

関数を呼び出して、キャレットの点滅速度を設定することもできますSetCaretBlinkTime。ただし、グローバル システム設定が変更されるため、他のアプリケーションに影響するため、これはお勧めできません。Thorsten が提案するように実行し、何か違うものを見たい場合は、マシンの設定を変更するのが最善です。常にユーザーの設定を尊重する必要があります。彼ら(または他の誰か)がキャレットを点滅させないようにシステムを設定したのには理由があります。

当然、C# アプリケーションからキャレット管理に関連するこれらの Win32 API 関数を呼び出すには、P/Invoke を使用する必要があります。自分が何をしているのかを知っていれば、それはそれほど難しくないはずです。完全な解決策が必要な場合は、この質問に報奨金を設定して、私にあなたのために作成するよう説得することを検討してください.

于 2013-04-05T06:07:01.790 に答える