- - PR -
BackColorのオーバーライドについて
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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 ************************************************ これで正しいのでしょうか? お手数ですがご教授ください。 | ||||||||
|
投稿日時: 2003-10-01 21:51
aoppです
Label1.BackColor = System.Drawing.Color.Red ということですかね!! | ||||||||
|
投稿日時: 2003-10-01 22:14
ラベルってSystem.Windows.Forms.Labelでしょうか? それともSystem.Web.UI.WebControls.Labelとか? オーバーライドが必要というのはどこかに書いてあったんでしょうか?
これは、Labelクラスの派生クラスを作成してオーバーライドしてるってことですか? にしても、多分Labelクラスの動作と変わらないような気がしますが… ちなみにこのコードはどこに書いていますか? またどこかにこういう例が載ってたりしました? さすがにこの部分だけだと、正しいかといわれれば文法的には多分正しいのでしょうし、ラベルの背景色を変更したいという目的から考えれば多分正しくないのでしょうし… 普通は使うときに、デザイナとかでBackColorプロパティを設定すればよいだけだと思いますが、何らかの理由があってこのようにしてみたのであれば、どのような考えからそうしたのか教えてください。 # どこかにこういうサンプルがあったとかでも。 単純に、デザインの方法というかフォームの基本が分からないのであれば、何か入門の書籍やWebサイトを見ていろいろ試してみると良いと思います。 | ||||||||
|
投稿日時: 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は変わりませんでした・・。 すみませんが引き続きご教授お願いいたします。 | ||||||||
|
投稿日時: 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-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メソッドは通過しています。 でも色は変わりません。 すみませんが引き続きお願いします | ||||||||
|
投稿日時: 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-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 だということははなももさん以外の人にはわからないわけで、こういった情報を書くことが必要になるということです。 # もしこの情報がなければ、なぜ出来ないんだと皆首をかしげることになります。 というわけで、えらそうで申し訳ないですが、このような情報を示すことが重要なのだということを納得していただければと思います。 |