2015年9月23日水曜日

VB Lable の文字を右揃えで

さて、ラベルを幾つか表示して、その文字を右揃えにしたい時ってありませんか?。
色々なプロパティを触って見ても、なかなか、上手く行きません。
勿論、そんな、ユーザーコントロールを作ってしまう手もあるのでしょうが ... 。
ここでは、簡単に、行きます。  標準のコントロールを使って、右揃え!。


基本的に、コントロールの Label は 左揃え です。
色々、弄繰り廻しても、 左揃え です。

でも、幾つかの Label を配置して、それを 右揃え に したい場合だって ありますよね。

ここでは、 TextBox を流用して、 見た目を Label に変える 方針で、 以下に説明します。


Designer でコントロールを配置する際に、 Label ではなく、 TextBox を配置して下さい。
但し、 その名前を、 他の TextBox 群と区別する為に、 固有の名称を与えます。
この例では、 普通の TextBox は TextBoxN* 、 Label もどき に変換するものは TextBoxLR_N* です。
TextBoxLR_N* は TextBox Label Right-align のつもり。.   
言い換えれば、 TextBoxLR_ を含む名前で命名された TextBox を Label の様に表示させます。
       ctrl.Name. に続く箇所で .StartsWith("ほにゃらら") に変えてもいいでしょう。  この部分は適宜に。.
実行時に、 Load Event で、一括して、 該当 TextBox の Propaty を変換してしまいます。

こんな感じですね。

 Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TextBox Named 'TextBoxLR_*' Show Like Label
        'Can Copy Text To Clipboard
        For Each ctrl In Me.Controls
            If ctrl.GetType Is GetType(TextBox) And ctrl.Name.Contains("TextBoxLR_") Then
                ctrl.TextAlign = HorizontalAlignment.Right
                ctrl.BorderStyle = BorderStyle.None
                ctrl.BackColor = SystemColors.Control
                ctrl.ReadOnly = True
            End If
        Next

        Me.TextBoxLR_1.Text = "File"
        Me.TextBoxLR_2.Text = "Strings"
        Me.TextBoxLR_3.Text = "URL"

    End Sub

End Class

Designer の画面と、実行時の画面は、 この通りです。
この例では、TextBoxLR_3 のみ、最初から、BorderStyle = BorderStyle.None で設定してあります(Designer で)。
これは、実行時の表示画面のイメージを掴む為で、 実際の運用では、指定は不要です。  他の Control 参照。.



尚、Label の Text はクリップボードへのコピーが標準では出来ませんが、
この方法では、 TextBox もどき(そのもの) ですから、 すんなり、コピー出来てしまいます。
Label 状態で表示させていると見せ掛けて、その実、コピーも可能!なんて裏技にも どうぞ。  :) 。



0 件のコメント:

コメントを投稿