- PR -

BackColorのオーバーライドについて

投稿者投稿内容
はなもも
会議室デビュー日: 2003/09/10
投稿数: 12
投稿日時: 2003-10-01 16:46
こんにちは、お世話になります。

検索でBackColorのオーバーライドについて調べたのですが、
見た限り当てはまるものが見当たらなかったので質問します。
もしあったのでしたら私のミスです。すみません。

開発言語は Microsoft Visual Studio .NET 2003です。

ラベル(Label1)の背景色を変更したいのですができません。
オーバーライドが必要なのですよね?
そこで、今このように記述しているのですが
************************************************
Public Overrides Property BackColor() As Color

Get
Return MyBase.BackColor
End Get
Set(ByVal Value As Color)
MyBase.BackColor = Value
End Set

End Property
************************************************

これで正しいのでしょうか?

お手数ですがご教授ください。
AOPP
ベテラン
会議室デビュー日: 2002/11/18
投稿数: 66
投稿日時: 2003-10-01 21:51
aoppです

Label1.BackColor = System.Drawing.Color.Red
ということですかね!!
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2003-10-01 22:14
引用:

ラベル(Label1)の背景色を変更したいのですができません。
オーバーライドが必要なのですよね?


ラベルってSystem.Windows.Forms.Labelでしょうか?
それともSystem.Web.UI.WebControls.Labelとか?

オーバーライドが必要というのはどこかに書いてあったんでしょうか?

引用:

そこで、今このように記述しているのですが
************************************************
Public Overrides Property BackColor() As Color

Get
Return MyBase.BackColor
End Get
Set(ByVal Value As Color)
MyBase.BackColor = Value
End Set

End Property
************************************************

これで正しいのでしょうか?


これは、Labelクラスの派生クラスを作成してオーバーライドしてるってことですか?
にしても、多分Labelクラスの動作と変わらないような気がしますが…

ちなみにこのコードはどこに書いていますか?
またどこかにこういう例が載ってたりしました?

さすがにこの部分だけだと、正しいかといわれれば文法的には多分正しいのでしょうし、ラベルの背景色を変更したいという目的から考えれば多分正しくないのでしょうし…

普通は使うときに、デザイナとかでBackColorプロパティを設定すればよいだけだと思いますが、何らかの理由があってこのようにしてみたのであれば、どのような考えからそうしたのか教えてください。
# どこかにこういうサンプルがあったとかでも。

単純に、デザインの方法というかフォームの基本が分からないのであれば、何か入門の書籍やWebサイトを見ていろいろ試してみると良いと思います。
はなもも
会議室デビュー日: 2003/09/10
投稿数: 12
投稿日時: 2003-10-01 22:21
aoppさんご回答ありがとうございます。

私が今までやってきたことを最初に書きます

私は最初こんなロジックを書きました。↓
************************************************
Private Sub Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Label.BackColor = Color.Red

End Sub
************************************************
これではBackColor は変わりませんよね・・

参考書で調べたら下記のようなロジックが載っていたので
オーバーライドが必要なのではないかと思ったのです↓
************************************************
Public Overrides Property BackColor() As Color

Get
Return MyBase.BackColor
End Get
Set(ByVal Value As Color)
MyBase.BackColor = Value
End Set

End Property
Private sub Button1_Click(Byval sender As System.Object, Byval e As System.EventArgs) Handles Button1.Click
'背景色を変更する
UserControl1.BackColor = Color.Red
End Sub
************************************************

そこで
************************************************
Public Overrides Property BackColor() As Color

Get
Return MyBase.BackColor
End Get
Set(ByVal Value As Color)
MyBase.BackColor = Value
End Set

End Property

Private Sub Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Label.BackColor = Color.Red

End Sub
************************************************
このロジックを加えた次第でした。


aoppさんから教えていただいた
Label1.BackColor = System.Drawing.Color.Red を試してみましたが
BackColorは変わりませんでした・・。
すみませんが引き続きご教授お願いいたします。
AOPP
ベテラン
会議室デビュー日: 2002/11/18
投稿数: 66
投稿日時: 2003-10-01 22:48
aoppです。

引用:
--------------------------------------------------------------------------------
Private Sub Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Label.BackColor = Color.Red

End Sub
--------------------------------------------------------------------------------


WINDOWSアプリのLabelですね
問題なさそうですね(動作しました。)
ブレイクポイントでも入れてみてForm_Loadメソッドを通過しているか確認してみては!!!




[ メッセージ編集済み 編集者: AOPP 編集日時 2003-10-01 22:49 ]
はなもも
会議室デビュー日: 2003/09/10
投稿数: 12
投稿日時: 2003-10-02 10:17
なちゃさん、AOPPさん、ご回答ありがとうございます。

今、私はプロジェクトを新規作成するときに、
「スマートデバイスアプリケーション」
(Pocket PC およびリソースに制約のあるデバイス用の
アプリケーションを作成するためのプロジェクト)
を選択しています。

>単純に、デザインの方法というかフォームの基本が分からないのであれば、
>何か入門の書籍やWebサイトを見ていろいろ試してみると良いと思います。
フォームのデザインでラベルのプロパティを見ても、
(Name)
ContextMenu
Enabled
Font
ForeColor
Location
Locked
Modifiers
Size
Text
TextAligh
Visible
これだけしかプロパティがありません。
BackColorはないので、デザインでは設定できないのです。

>WINDOWSアプリのLabelですね
>問題なさそうですね(動作しました。)
>ブレイクポイントでも入れてみてForm_Loadメソッドを
>通過しているか確認してみては!!!
Form_Loadメソッドは通過しています。
でも色は変わりません。

すみませんが引き続きお願いします
Hasumi
ベテラン
会議室デビュー日: 2002/07/23
投稿数: 78
お住まい・勤務地: 神奈川・東京
投稿日時: 2003-10-02 11:46
Hasumiです。

.NET Compact Framework でのLabelのBackColorプロパティの
サポート状況はなんと言うか微妙です。

たとえば以下のコードでは

label1.BackColor = System.Drawing.Color.Red;
textBox1.BackColor = label1.BackColor;

textBox1のBackColorは赤になりますが
label1のBackColorは見た目上変化しません。

私はLabelをPanel内に配置してPanelのBackColorを変更して
対処しました。

panel1.Controls.Add(label1);
panel1.BackColor = System.Drawing.Color.Red;

-------------
上記コードはC#です。

[ メッセージ編集済み 編集者: Hasumi 編集日時 2003-10-02 11:50 ]
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2003-10-02 13:38
> 今、私はプロジェクトを新規作成するときに、
> 「スマートデバイスアプリケーション」
> (Pocket PC およびリソースに制約のあるデバイス用の
> アプリケーションを作成するためのプロジェクト)
> を選択しています。

>BackColorはないので、デザインでは設定できないのです。

うーん、Compact Framework なんですね…
私は Compact Framework は試したことがありませんが、Hasumiさんが書かれているように、LabelのBackColorは使えないみたいですね…

これは、ヘルプのLabelのBackColorに、「.NET Compact Framework でもサポート。」という記述がないことから分かります。PanelやTextBoxのBackColorにはちゃんと記述があります。

ちなみに、私が前に「どのような考えからそうしたのか」などと書いたのは、はなももさんがなぜデザイナなどの簡単に出来る(というか、普通にやれば出来ると思われる)方法でうまくいかないのかが分からなかったからです。

今回のその原因は、.NET Compact Framework 用の開発をしていたためで、もともとサポートされてないからですね(というわけで、そもそもデザイナには出てこない)。
でも、Compact Framework だということははなももさん以外の人にはわからないわけで、こういった情報を書くことが必要になるということです。
# もしこの情報がなければ、なぜ出来ないんだと皆首をかしげることになります。

というわけで、えらそうで申し訳ないですが、このような情報を示すことが重要なのだということを納得していただければと思います。

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