- PR -

TextBox.Enabled = false の時の前景色

投稿者投稿内容
ろぴ
会議室デビュー日: 2004/02/15
投稿数: 4
投稿日時: 2004-03-05 12:42
あれ、知らない間にレスがたくさんついてる。
メールが送信されるハズのなのに・・・
皆様、ご回答ありがとうございます。
現状は、

ゆうじゅんさんの
ReadOnly属性をつけてタブオーダーからはずす。
に加えて、
●HideCaret API関数で、テキストボックスのチカチカを消す。
●それから、マウスでクリックされたときには、入力状態のマウスポインタを
矢印マークのマウスポインタに変えて、以前のコントロールにフォーカスを移す。
としています。

ラベルでもいいのですが、.NETだと、テキストが勝手に折り返されてしまいます。
ラベルの概観も以前と違いますよね。概観は、以下の方法でテキストボックスと同じに
出来ました。

Private Sub ctlLabel_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles ctlLabel.Paint
'ラベルコントロールのオーナードロー
'ラベルコントロールの3D表示の堀りを深くする
If ctlLabel.BorderStyle = BorderStyle.Fixed3D Then
e.Graphics.DrawLine(New Pen(SystemColors.ControlDarkDark), 0, 0, ctlLabel.Width - 4, 0)
e.Graphics.DrawLine(New Pen(SystemColors.ControlDarkDark), 0, 0, 0, ctlLabel.Height - 4)
End If
End Sub

テキストボックスの文字を黒で、再描画できればいいのですが・・・
難しいですね。




tyeggs
会議室デビュー日: 2003/12/11
投稿数: 4
投稿日時: 2004-03-08 16:51
こんな方法もあるので参考までに

TextBox を継承した後、WndProcを呼び出します。
その値が、WM_PAINT の場合には、独自のペイントをおこなうこと
で対応可能です。

但しWM_PAINTを受信した場合に
必ずなってしまうのでタイミングが限定できず
意図しないときにも独自のペイント処理が
行われてしまうので考慮が必要です。

スキルアップ/キャリアアップ(JOB@IT)