- PR -

ImageButtonコントロールのWidthをIntegerに変換する方法。

投稿者投稿内容
hoshino
常連さん
会議室デビュー日: 2007/02/21
投稿数: 46
投稿日時: 2007-03-18 17:41
久しぶりに投稿させていただきます。
皆様よろしくお願いいたします。

現在GridView内のImageコントロールにバインドされたImageのWidthを取得し、
一定以上であれば縮小したいと考え、PageRoad時に次のような処理をしたのですが、
WidthがUnit型のためうまくいかないらしく、処理に困っています。

For Each r As TableRow In GridView.Rows
For Each tc As TableCell In r.Cells
For Each c As Control In tc.Controls
If TypeOf c Is ImageButton Then
Dim wid As Unit = CType(c, ImageButton).Width
If wid > 100 Then // ここがうまくいきません
CType(c, ImageButton).Width = 100
End If
End If
Next
Next
Next

Unit型をIntegerに変換すればうまくいくのではと考え色々と調べたのですが
見つからなかったので投稿させていただきました。

そのほかにも何か良い方法などあれば教えていただければ幸いです。
よろしくお願いいたします。

_________________


[ メッセージ編集済み 編集者: hoshino 編集日時 2007-03-18 17:42 ]

[ メッセージ編集済み 編集者: hoshino 編集日時 2007-03-18 17:42 ]

[ メッセージ編集済み 編集者: hoshino 編集日時 2007-03-18 17:42 ]
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2007-03-18 18:15
引用:

hoshinoさんの書き込み (2007-03-18 17:41) より:

If wid > 100 Then // ここがうまくいきません
CType(c, ImageButton).Width = 100
End If





引用:


If wid.Value > 100 Then // ここがうまくいきません
CType(c, ImageButton).Width = new Unit(100)
End If



とすると良いと思います。

試してませんが。
hoshino
常連さん
会議室デビュー日: 2007/02/21
投稿数: 46
投稿日時: 2007-03-18 18:30
NAL-6295様、お返事ありがとうございます。

さっそく試したところ、無事デバックは通ったものの、
先ほど私が書きました処理ですと、どうもバインドする前のWidthを取得しているのか、
ページが表示された時にはImageのWidthに変化がありませんでした。
ようはGridViewにバインドされる画像の中で、大きすぎるものを事前に縮小して表示させたいのですが。

なにか良い方法があればご教授いただけるでしょうか?
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-03-18 23:17
引用:
現在GridView内のImageコントロールにバインドされたImageのWidthを取得し、

とおっしゃるわりには
引用:
Dim wid As Unit = CType(c, ImageButton).Width

ImageButtonのWidthを取得していますが、ImageButtonのWidthをどうやって設定していますか?

デバッグして、widに想定される値(100より大きい値)が入っていますか?
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2007-03-19 00:00
NAL-6295です。

Page_load時ではなく、各行をバインドする時に行うと良いです。
もっと言うと、Page_load時はサイズを小さくしたいコントロール自体が生成されていないでしょう。

[ メッセージ編集済み 編集者: NAL-6295 編集日時 2007-03-19 00:01 ]
hoshino
常連さん
会議室デビュー日: 2007/02/21
投稿数: 46
投稿日時: 2007-03-19 00:16
べる様、ご指摘ありがとうございます。
すみません間違えていました。
実際にはImageButtonを使用しております。

ImageButtonのWidthはautoに設定しております。
そこへ先ほどの処理をPageLoad時に設定したページに、
Widthが100を超える画像(200px)をバインドさせた結果、
やはり200pxのまま出てきてしまいます。

なにか良い方法や、ご指摘等ございましたらよろしくお願いいたします。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-03-19 01:25
引用:
実際にはImageButtonを使用しております。

ImageButtonのWidthはautoに設定しております。

Widthをautoにってどういう意味ですか?設定しないってことですか?
いずれにしてもImageButtonのWidthと100を比較しても意味がないですよね?

そもそもwidthの情報はどうやって取得しているのですか?(DBに入ってるとか)
取得していないなら、画像そのもののwidthを取得する必要がありますよね。
hoshino
常連さん
会議室デビュー日: 2007/02/21
投稿数: 46
投稿日時: 2007-03-19 02:14
お返事ありがとうございます。

初心者なものでとんでもないことを言って申し訳ございません。
べる様のご意見をお聞きしますところ、私がやるべきことは
画像そのもののwidthを取得することだったようです。

バインド後のImageButtonのWidthは画像のWidthに反映された値となっていると勘違いし、画像のWidth=ImageButtonのWidthという勝手な想像をしてしまっていました。

自分でも調べてみますが、画像そのもののwidthを取得する方法ごございましたら、
お教えいただければ幸いです。
色々聞いてしまって申し訳ございません。

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