- - PR -
TreeViewコントロールの高さor幅の取得方法
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-08-01 14:46
今、TreeViewコントロールの高さと幅を取得ができなくて困っています。 string c_height = TreeView1.Height.Value.ToString(); string c_width = TreeView1.Width.Value.ToString(); とコントロール作成後、上記のように記述をすると0としか値を取得できていません。 エラーも出力されず、どうなっているのか解かりません。 取得方法をご教授願えませんでしょうか。 よろしくおねがいします。 | ||||
|
投稿日時: 2003-08-01 16:10
こんにちは。
Microsoft Web IE Componentの、TreeViewでしょうか? Heignt.Valueというところから、そうだと思いますが。。。 そういう前提で、このコントロールの大きさは、動的に(というか、ノードの数によって)変化します。したがって、コントロールを生成しても、ノードが作成されていなければ幅も高さも0です。 ノードを設定後、取得してみてください。 | ||||
|
投稿日時: 2003-08-04 10:09
返信が遅れてしまい申し訳ございません。
諸事情により、返信できませんでした。 Jittaさん、回答ありがとうございます。 >ノードを設定後、取得してみてください。 下記のようにJittaさんの記述どおり、ノードを作成後に 値の取得も試みてみたのですが、"0"の値しかとれない状況 なのです。 ------------------------------ foreach(DataRow rowCate in oDS.Tables["SECTION"].Rows) { s_count = s_count + 1; g_count = -1; n1 = new TreeNode(); n1.Text = rowCate["SECTION_NAME"].ToString(); n1.Type = "folder"; TreeView1.Nodes.Add(n1); //子ノード(グループ・ループ) foreach(DataRow rowSoft in rowCate.GetChildRows("SG_REL")) { g_count = g_count + 1; n2 = new TreeNode(); n2.Text = rowSoft["GROUP_NAME"].ToString(); n2.Type = "file"; n2.NodeData = rowSoft["GROUP_ID"].ToString(); n1.Nodes.Add(n2); } } string c_height = TreeView1.Height.Value.ToString(); string c_width = TreeView1.Width.Value.ToString(); ---------------------------------- ですが、 TreeView1.Height = 270; string c_height = TreeView1.Height.Value.ToString(); と記述すると、値を確認できるのですが取得だけとなると どうもうまくいきません。 どうかよろしくお願いいたします。 返信の件大変申し訳ございません。 | ||||
|
投稿日時: 2003-08-04 10:37
想像ですが...Web用のコントロールなので、HTMLに出力されたときに<... HEIGHT="...">が入っていないと、値を取ることができないかもしれません。 プロパティエディタで、値を入力しておいた場合は、どうでしょう? | ||||
|
投稿日時: 2003-08-04 10:59
回答ありがとうございます。
>プロパティエディタで、値を入力しておいた場合は、どうでしょう? エディタで値をセットしておくと、取得ができました。 やはりHTMLに出力された時に、HEIGHT値がないと 取得できないということなるのですかね?? だとするとコントロールを作成時に、必要幅を予め取得して、 表示時に代入するというのは実現不可能になるのでしょうか? 固定値のコントロール幅ではなく、動的な値をコントロール幅に 合せてセットしたかったのですが。 | ||||
|
投稿日時: 2003-08-04 13:09
PreRenderで取得、設定という方法もありますが、どうでしょう? TreeViewコントロールの場合、ピクセル単位での設定になると思いますが、表示するフォント、表示倍率によって必要とする幅が変わるのではないでしょうか?フォントの指定をしていても、ブラウザ側でユーザ指定のスタイルシートが優先されていると、コンテンツ作成者の意図とは変わってしまいます。 デフォルトですべて表示されますよね?クリッピングなどをするのでなければ、何も指定しなくてよいのではないでしょうか? | ||||
|
投稿日時: 2003-08-04 14:18
>PreRenderで取得、設定という方法もありますが、どうでしょう? PreRenderを使用しても、初期値の幅取得は不可能でした。 > TreeViewコントロールの場合、ピクセル単位での設定になると思いますが、表示するフォン>ト、表示倍率によって必要とする幅が変わるのではないでしょうか?フォントの指定をしてい>ても、ブラウザ側でユーザ指定のスタイルシートが優先されていると、コンテンツ作成者の意>図とは変わってしまいます。 > デフォルトですべて表示されますよね?クリッピングなどをするのでなければ、何も指定し>なくてよいのではないでしょうか? なぜ初期値で幅を取得したいかといいますと、TreeViewコントロールをポップアップにて 別ウインドウで、最小限の大きさにて表示したいという意図から、このような質問にいたって います。またユーザー指定による、フォントの変更はユーザーがデフォルト設定を使用してい ないとのことで、仕方ないという認識の上作業を行っています。 | ||||
|
投稿日時: 2003-08-05 12:04
例えば、ノードを展開していたときと、畳んでいたときとでコントロールの描画に必要な領域が変わってきますよね。これはどう対応されるのでしょうか?すべて展開したままとする? 実は私も同じようなことを考えたのですが、私の方では、高さがもしかするとWindowsの画面では収まらないようなことも発生し得るため、「これくらいあれば見難くはないだろう」という大きさにし、リサイズ可能としました。 |
1