- PR -

TreeView のスタイルの設定について

1
投稿者投稿内容
sho
会議室デビュー日: 2004/07/27
投稿数: 5
お住まい・勤務地: 横浜市
投稿日時: 2004-08-12 15:54
はじめまして、shoと申します。
2ヶ月ほど前からASP.NETの開発(使用言語はVB.NET)をしています。

現在、Microsoft WebControl の TreeViewコントロールでツリーを作成しているのですが、TreeViewやTreeNodeのDefaultStyle、SelectedStyle、HoverStyle等のCssCollectionクラスのプロパティを外部スタイルシートから設定したいのですが、どのようにCssCollectionを作成してよいのやらさっぱりわかりません。
英語のリファレンスや、海外のBBSなどに投稿されていた同様のスレッド等も読んでみたのですが、ほとんどわかりません。

方法をご存知の方、または参考情報をお持ちの方がいらっしゃいましたら、ぜひご教授ください。よろしくお願いします。
いちごみるく
会議室デビュー日: 2003/06/17
投稿数: 4
投稿日時: 2004-08-18 12:06
使えそうなコンストラクタは、
(1)CssCollection(string cssText)
(2)CssCollection(CssStyleCollection style)
この2つくらいじゃないかと思うんですけど・・・

(1)
this.treeView.SelectedStyle
= new CssCollection("color: highlighttext; background-color:highlight;");
とか?(動作確認してません、たぶんの世界です)

(2)
CssStyleCollectionクラスもヘルプを見ると、
インライン スタイル属性を保持します。
って書いてあるから結局クラス指定はできないかもしれません。

CssClassを指定して、CssStyleCollectionを作成する方法までは
調べていませんが・・・
そもそも
CssClassを指定して、CssStyleCollectionを作成する方法を知りたい!
っていう質問なのかな、これは・・・
スタイルシートをブラウザ任せではなく、ASP.NET内で解析する方法は?
って質問してみたら、どなたか教えてくれるかもしれませんよ。

sho
会議室デビュー日: 2004/07/27
投稿数: 5
お住まい・勤務地: 横浜市
投稿日時: 2004-08-18 13:35
いちごみるく様 りプライありがとうございます。
質問の内容についてわかりにくかったようなので、追加で説明しておきます。

テキストボックスやラベルなどのWebControlであれば、CssClassを設定することで、Webページに関連付けられているスタイルシートからスタイルの読み込みができますよね。
それと同様に、TreeViewにも関連付けられているスタイルシートから表示スタイルを設定したいと考えています。

ところが、CssClassプロパティを設定しても期待していた動作をしてくれなかったので、DefaultStyleプロパティに設定をしてみたところ期待通りに動きました。このときはCssCollectionの引数は いちごみるく様のいわれている(1)の方法で書きました。

ということで、このプロパティに設定すれば表示スタイルを思い通りに変更できることがわかったのですが、これ(DefaultStyleプロパティへの設定)を関連付けられているスタイルシートから行う方法が見当もつかない状況です。


いちごみるく様から頂いたコンストラクタでは、どちらもスタイルの内容がわかっていないと設定ができないのではないかと思います。(せっかく情報を頂いておいて申し訳ありません)
とすると、やはりスタイルシートの内容を解析する方法を考えたほうがいいのでしょうか。(実はこちらも一度考えてみて挫折しているのですが。)
いちごみるく
会議室デビュー日: 2003/06/17
投稿数: 4
投稿日時: 2004-08-20 12:00
あ...と、私もうまく説明できてなかったようでf^^;

shoさんは、DefaultStyleプロパティへCssClassで指定する風にクラス名を指定したいのですよね。
DefaultStyleは、スタイルを(クラス名ではなく)文字列で指定しなければなりませんしね。

ASP.NETで使われている<object>.CssClassも、
結局は、クライアントに送信されてから、ブラウザがStyleSheetの中身と関連付けてくれるので、
サーバーサイドでStyleSheetの中身をさわったりする必要が一般的に少ない
&ゆえに、手段が(ちらっと探した限りでは)見当たらない
のだと、私は思い込んでいます。※あまり詳しくないので間違ってる可能性大(x_x)
なので、
> やはりスタイルシートの内容を解析する方法を考えたほうがいいのでしょうか。
これしかないと思うんですよねぇ。

だから、別スレッドで、
サーバーサイドでStyleSheetの中身を探る方法は?
とか作った方が、ご存知の方のレスがくるかも!という提案でした。(1案)

(1案)でサーバーサイドで対処する方法の他は、
残るはクライアント側でなんとかするしかないと思うのですが、
TreeViewって、.htcファイルのJavascriptらしきもので動くじゃないですか。
#あ、DHTMLビヘイビアとかいうらしいです。すいません。
ちょっと見てみましたが、
<object>.style.cssText = 〜〜〜
ってやってるところを、
<object>.class = 〜〜〜
に変えれば、実現できるかもしれないなぁと思いました。※試してません。(2案)
もちろんこの場合、
DefaultStyleプロパティへは、おかまいなしにスタイルのクラス名を設定します。

中途半端(確信がない)な提案ばかりで申し訳ございませんが、
参考になれば幸いです・・・

1

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