- PR -

Labelコンポーネントでのマイナス記号の表示

1
投稿者投稿内容
Hodgkin
常連さん
会議室デビュー日: 2003/07/18
投稿数: 34
投稿日時: 2005-01-07 20:23
いつもお世話になっております。

現在、VB.NETでWindowsアプリケーションを開発しております。

<環境>
 OS: WIN2000
 Framework: .NET Framework 1.0 SP2

この環境で
 Label
  △
  |
 BlackLabel
  △
  |
 BlackNumberLabel

でコンポーネントを作成しています。(継承関係)
BlackLabelでは、背景色、文字色、フォントを変更しています。
BlackNumberLabelでは、intValueというプロパティを追加しております。

--<下記、intValueプロパティ>--
 Public Property intValue() As Integer
  Get
   'カンマを削除する
   Dim cutComma As String = Replace(Me.Text, ",", "")

   '***入力制御
   If (IsNumeric(cutComma)) Then
    Return CInt(cutComma)
   Else
    Return 0
   End If
  End Get
  Set(ByVal Value As Integer)
   If Value < 0 Then
    Value = Value * (-1)
    MyBase.Text = "-" + Value.ToString("###,##0")
   Else
    MyBase.Text = Value.ToString("###,##0")
   End If
  End Set
 End Property
--<以上>--

ここで、intValueに対してマイナスの値を設定するとマイナスの記号が後ろに
表示されます。
 例)「-999999」を設定
    ↓
   「999,999-」と表示される
ちなみにデバッグモードで問題の箇所をトレースし、ウオッチ式で見ると「-999,999」と
なっています。(それでも画面に表示されるのは「999,999-」)

ただ、Labelに対して下記のコードで値を設定した場合はマイナスの記号が先頭
に表示されます。(正常な動き)

  Dim Label1 AS Label = new Label()
  Label1.Text = "-" + String.Format("{0:#,##0}", Value)

どなたか情報をお持ちの方はいらっしゃいますでしょうか?
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2005-01-07 23:43
諸農です。

.NET v1.1の環境なので参考にならないかもしれないですが、
次のコードで作成したクラスをC#プロジェクトで利用したところ
問題なく表示できました。

コード:
Imports System
Imports System.Windows.Forms

Public Class MyLabel
    Inherits Label

    Dim myValue As Integer = 0
    Public Property intValue() As Integer
        Get
            Return myValue
        End Get

        Set(ByVal Value As Integer)
            myValue = Value
            Me.Text = myValue.ToString("###,##0")
        End Set
    End Property
End Class



_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-01-08 19:43
 2000ではどうだったかわかりませんが、コントロールパネルの「地域のオプション」に、「数値」をカスタマイズするタブがないでしょうか。XPでは
「地域と言語のオプション」→「地域オプション」タブ→「カスタマイズ」ボタン→「数値」タブ
になります。ここに、「負の値の形式」というのがあって、ここで"999-"とか"-999"とかに変更することができます。
_________________
Hodgkin
常連さん
会議室デビュー日: 2003/07/18
投稿数: 34
投稿日時: 2005-01-08 23:30
Jubeiさん、Jittaさんありがとうございます。

Jittaさんの仰る通り、地域オプションが関連しているのではないかと
考えたのですが、「負の値の形式:-999」となっておりました。

ただ、LabelのTextに値を設定しているだけなので、地域オプションが
関係しているとは考えずらいです。

更に色々なパターンを試してみました。
 例)MyBase.Text = Value.ToString("###,##0") + '-'
    ↓
   「-999,999」と表示される

 例)MyBase.Text = Value.ToString("###,##0") + '\-'
    ↓
   「\-999,999」と表示される

 例)MyBase.Text = Value.ToString("###,##0") + '-\'
    ↓
   「-\999,999」と表示される

 例)MyBase.Text = 'XXX' + Value.ToString("###,##0")
    ↓
   「XXX999,999」と表示される

Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2005-01-09 09:00
諸農です。

引用:

更に色々なパターンを試してみました。



1.Me.Textと指定した場合はどうなりますか?
2.別途用意したstring変数に一度格納した場合の内容はどうなりますか?
3.Value.ToString()ではなくString.Format()を使った場合はどうなりますか?


_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
1

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