C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

LabelとCheckBoxのテキスト描画について


(過去ログ 119 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■69928 / inTopicNo.1)  LabelとCheckBoxのテキスト描画について
  
□投稿者/ らうむ (5回)-(2014/02/12(Wed) 13:54:50)

分類:[.NET 全般] 

Win7 .net2010 C#
お世話になります。
LabelやCheckBoxの中のテキスト表示領域について質問です。
VB6で作ったアプリと比較した場合ですが、VB6のコントロールではコントロールの横幅いっぱいにテキストが
表示されますが。.Netコントロールの場合、左右に結構なマージンがあり、同じ横幅のコントロールでも、
C#のほうで作ったアプリでは内部のテキストが表示されない(見切れる)ケースがあります。
これを解決したいのですが、何かいい方法はないでしょうか。
※アプリの互換性維持の為、コントロールの横幅を変えての対応はできません。

CheckBoxはOnPaintをオーバーライドしてテキストを自前描画できれば・・・と思いましたが、
既定のテキスト描画を止めることができませんでした。
CheckBox、LabelともにDrawMode等も指定できそうになく。

どなたかよい方法をご存知でしたらご教示いただけないでしょうか。

よろしくお願いしますm(__)m
引用返信 編集キー/
■69936 / inTopicNo.2)  Re[1]: LabelとCheckBoxのテキスト描画について
□投稿者/ shu (485回)-(2014/02/13(Thu) 08:44:35)
No69928 (らうむ さん) に返信
> CheckBoxはOnPaintをオーバーライドしてテキストを自前描画できれば・・・と思いましたが、
> 既定のテキスト描画を止めることができませんでした。
> CheckBox、LabelともにDrawMode等も指定できそうになく。

VB.NETですが、OnPaintを使う例です。CheckBoxStateは各状態に合わせ変更してみて下さい。

Public Class CheckBoxEx
    Inherits CheckBox

    Public Sub New()
        SetStyle(ControlStyles.UserPaint, True)
    End Sub

    Protected Overrides Sub OnPaint(pevent As System.Windows.Forms.PaintEventArgs)
        Dim grp = pevent.Graphics
        Using brs As New SolidBrush(Me.BackColor)
            grp.FillRectangle(brs, Me.ClientRectangle)
        End Using
        CheckBoxRenderer.DrawParentBackground(grp, Me.ClientRectangle, Me)
        CheckBoxRenderer.DrawCheckBox(grp, New Point(0, 0), _
                                      New Rectangle(15, 0, Me.Width - 15, Me.Height), _
                                      Me.Text, _
                                      Me.Font, _
                                      Me.Focused, _
                                      VisualStyles.CheckBoxState.CheckedPressed)
    End Sub
End Class

引用返信 編集キー/
■69941 / inTopicNo.3)  LabelとCheckBoxのテキスト描画について
□投稿者/ らうむ (7回)-(2014/02/13(Thu) 10:40:33)
2014/02/13(Thu) 10:41:33 編集(投稿者)

shu様

いつもお世話になります。
サンプル、ありがとうございました。このような関数があったのですね。
勉強になりました。

試してみたのですが、テキストの表示内容をチェックボックスの幅に
合わせて改行する必要があったので、ご提示いただいたコードでは
対応できそうになく、泣く泣く別途手段を検討しました。

最終的にはDOBON様サイトにあったサンプルを参考に
ControlPaint.DrawCheckBox と e.Graphics.DrawStringを駆使して
実現しました。

お手数をおかけしました。
有益な情報、ありがとうございました m(__)m

                        以上
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -