- PR -

BackStyleプロパティが無い

投稿者投稿内容
LANVIN
大ベテラン
会議室デビュー日: 2007/03/12
投稿数: 211
投稿日時: 2008-02-05 11:21
 こんにちは。

1つ教えて下さい。

 VB6.0からVB2005にコンバートしたいのですが
ラベルのプロパティでBackStyleがありません。
ピクチャボックスにラベルを配置し、ラベルの背景は
透明にしたいのです。
いろいろ検索した結果
picTTL.Controls.Add(Label2)という書き方を
見つけました。
確かにラベルの表示はOKなのですが
表示位置がずれてしまいます。

ピクチャボックスの右下に配置しているのですが
上の方にずれてしまいます。

何か良い方法教えて頂けないでしょうか?

宜しくお願いします。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2008-02-05 12:10
BackColorにTransparentは駄目ですか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-02-05 12:21
引用:

LANVINさんの書き込み (2008-02-05 11:21) より:

いろいろ検索した結果
picTTL.Controls.Add(Label2)という書き方を
見つけました。
確かにラベルの表示はOKなのですが表示位置がずれてしまいます。


picTTL とは何でしょうか? コントロールの名前 (picTTL) はどうでも良くて、コントロールの種類を明示した方が良いと思われます。

引用:

一郎さんの書き込み (2008-02-05 12:10) より:

BackColorにTransparentは駄目ですか?


たぶんダメだと思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-02-05 12:36
引用:

ピクチャボックスにラベルを配置し、ラベルの背景は
透明にしたいのです。

ピクチャボックスの右下に配置しているのですが


PictureBoxの右下部分の領域にLabelを重ねて表示したいのだと解釈しました。

代案1:Labelだけ使う。LabelのImageプロパティに画像を指定する。
# 画像の伸縮などは(たぶん)できない

代案2:PictureBoxのPaintイベントでテキストを描いてしまう
# 詳しい確認はとってないです
LANVIN
大ベテラン
会議室デビュー日: 2007/03/12
投稿数: 211
投稿日時: 2008-02-05 13:11
じゃんぬねっとさん
picTTLとはPictureBoxのことです。

行いたいことは
rainさんの
PictureBoxの右下部分の領域にLabelを重ねて表示したいのだと解釈しました
の通りです。

Labelだけ使うとありますが
LabelにLabelを貼り付けるということでしょうか?
くまっち
大ベテラン
会議室デビュー日: 2008/01/18
投稿数: 169
お住まい・勤務地: 茨城県のどこか。
投稿日時: 2008-02-05 13:44
ためしにやってみた。

Formにはデザイナ上でPictureBox(Control ID:PictureBox1)を配置し
Imageプロパティにて画像設定。

以下Form_Loadにて
コード:
Dim lbl As Label = New Label()

lbl.Text = "さんぷる"
lbl.ForeColor = Color.Red
lbl.BackColor = Color.Transparent

lbl.Top = Me.PictureBox1.Height - lbl.PreferredHeight
lbl.Left = Me.PictureBox1.Width - lbl.PreferredWidth

Me.PictureBox1.Controls.Add(lbl)



結果:画像の右下に「さんぷる」と赤字で表示。

こういうことですかね?
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-02-05 13:49
引用:

Labelだけ使うとありますが
LabelにLabelを貼り付けるということでしょうか?


いいえ、Labelコントロールを1つだけ使って、
そのImageプロパティとTextプロパティを利用します。

それと、もうちょっとよさげな方法がありました。

代案3:PictureBoxのかわりにPanelを使う

なぜだかよくわかりませんが、Panelに画像を設定して、その上に
BackColorをTransparentにしたLabelを配置するとうまくいくようです。

[追加]
確認は全て以下の環境でおこなっています。
・Windows XP Professional SP2
・Visual Studio 2005 Professional Edition
・Windowスタイルはクラシックスタイル(関係あるかわからないけど)
[/追加]

[ メッセージ編集済み 編集者: rain 編集日時 2008-02-05 13:52 ]
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-02-05 14:16
なるほど、Controls.Add()ってそういうことだったんですね。
すみません。上記代案は全て無視しちゃってください。

Panel案でうまくいったのは、PanelだとControls.Add()が
デザイナ上でできていたからなんですね、きっと。

[追加]
ぐぐったらこんなのがでてきました。
Visual Basic .NET における PictureBox コントロールの変更点
オブジェクトがパネルにアップグレードされ PictureBox に強制変換できない

特に問題なければ、PictureBoxのかわりにPanelを使ったほうがいいのかも?
デザイナ上で扱えますし。
[追加]

[ メッセージ編集済み 編集者: rain 編集日時 2008-02-05 14:31 ]

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