none
Ifを使ったDrawing.Colorについて RRS feed

  • 質問

  • 現在 2005で作ったアプリケーションをFramworkのインストールなどの問題があり

    2003で作り直しております

     

    元の2005のコードではcolorを判断するのに

     

       If label1.BackColor = Color.Blue Then

     

    というふうに使ってたのですが 2003ではエラーになってしまいます

     

    演算子”=”は、型system.Drawing.colorに定義されていませんとなります

     

    2003でcolorをIfで判断するには どうすれば良いのでしょうか

    2007年5月19日 4:31

回答

  • ちょっと不思議な気がしますが、そうなんですね。

     

    If label1.BackColor.Equals(Color.Blue) Then

     

    でいいと思います。

    2007年5月19日 4:49
    モデレータ
  • AAA is Nothing
    2007年5月19日 6:17
  • 結論からいうと、Color と Nothing との比較はできません。

    できるのは Color に対する代入だけです。

     

    1, If AAA = Nothing Then

    これは VB2003 の仕様のため不可。

     

    2, If AAA = Color.Empty Then

    これも 1 と同様。

     

    3, If AAA.Equals(Nothing) Then

    これは AAA の状態如何に関わらず、常に False が返されます。

     

    4, If AAA.Equals(Color.Empty) Then

    これが正解。

     

    ちなみに、次の 3 式の結果は同じです。

    Dim c As Color

    Dim c As Color = Nothing

    Dim c As Color = Color.Empty

    いずれも、c.Equals(Color.Empty) で True が返されます。

    2007年5月21日 1:19

すべての返信

  • ちょっと不思議な気がしますが、そうなんですね。

     

    If label1.BackColor.Equals(Color.Blue) Then

     

    でいいと思います。

    2007年5月19日 4:49
    モデレータ
  • trapemiyaさん いつもお世話になります

     

    ありがとうございました いけました

     

    もうひとつ聞いていいでしょうか?

      Dim pAAA as Color

      Public Property AAA() As Color
            Get
                Return pAAA
            End Get
            Set(ByVal value As Color)
                pAAA = value
            End Set
        End Property

     

    上で定義したプロパティ AAAで

    下のように書くと赤字の部分が これも2003では通りません

    Dim BBB as Color

    If AAA = Nothing Then
                    BBB = Color.Blue
      End If

     

    これも どのように書けば良いんでしょうか?

    何度も申し訳ございません

     

     

    2007年5月19日 5:39
  • AAA is Nothing
    2007年5月19日 6:17
  • そこは Equals(Color.Empty) ですね。

    プリミティブ型を除く 2 つの値型が等しいかどうかを比較する場合、基本的に Equals です。

    ただし、「具体的に何を比較するのか」ということに、若干の注意が必要ですが。……

    2007年5月19日 7:23
  •  中原俊さん ありがとうございます

     

    AAAがColorである為か 受け付けてくれませんでした

    2007年5月20日 23:26
  • Abstractさん ありがとうございます

     

    Ifの部分は

    If AAA.BackColor.Equals(Color.Blue) Then

    で 無事通りました

     

    Nothingの判断も

    If col.Equals(Color.Empty) Then

    で無事通りました

     

    ありがとうございました

    2007年5月20日 23:30
  • 結論からいうと、Color と Nothing との比較はできません。

    できるのは Color に対する代入だけです。

     

    1, If AAA = Nothing Then

    これは VB2003 の仕様のため不可。

     

    2, If AAA = Color.Empty Then

    これも 1 と同様。

     

    3, If AAA.Equals(Nothing) Then

    これは AAA の状態如何に関わらず、常に False が返されます。

     

    4, If AAA.Equals(Color.Empty) Then

    これが正解。

     

    ちなみに、次の 3 式の結果は同じです。

    Dim c As Color

    Dim c As Color = Nothing

    Dim c As Color = Color.Empty

    いずれも、c.Equals(Color.Empty) で True が返されます。

    2007年5月21日 1:19
  • Abstractさん ありがとうございました

     

    投稿がダブってしまいました

     

    If AAA.Equals(Color.Empty) Then

     

    で 通す事ができました

     

    ありがとうございました

     

     

    2007年5月21日 1:23