TreeViewの再表示のちらつきをなくす方法

このQ&Aのポイント
  • VB2005でWinアプリ開発中です。テキストボックスに条件を入力し、ボタンを押下すると、TreeViewに該当データのノードを設定し、ノードを展開した状態で表示する処理があります。
  • ノードが展開表示されている状態で、ボタンを押下し新しい情報を再表示すると、ノードが折りたたまれて展開されたというような動きが見えてしまいます。SuspendLayout/ResumeLayoutを入れてみたのですが、変化無しでした。
  • ノードが展開された状態で、パッと再表示するには、どのようにすればよいのでしょうか?
回答を見る
  • ベストアンサー

TreeViewの再表示のちらつきをなくす方法

お世話になっております。 VB2005でWinアプリ開発中です。 テキストボックスに条件を入力し、ボタンを押下すると、 TreeViewに該当データのノードを設定し、 ノードを展開した状態で表示する処理があります。 ノードが展開表示されている状態で、ボタンを押下し 新しい情報を再表示すると、 ノードが折りたたまれて展開されたというような動きが見えてしまいます。 SuspendLayout/ResumeLayoutを入れてみたのですが、変化無しでした。 ノードが展開された状態で、パッと再表示するには、 どのようにすればよいのでしょうか? よろしくお願いします!

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

VB2005は使ってないのでなんともいえませんが VB6まで(?)の典型的な方法としては その処理の開始前にいったんそのコントロールを 非表示にして処理後に表示しなおす方法を使いました。 (VB6でのVisibleのTureとFalse)

sunasaka3
質問者

お礼

toro777777さん、返答ありがとうございます。 VisibleのTure/False切り替えできれいに見えるようになりました! ありがとうございました!

関連するQ&A

  • TreeViewの制御について

    ASP.NET2.0、VB.NETでWebアプリを開発しております。 現在、TreeViewコントロールを用いたマスタページに各コンテンツページを配置しています。 詰まっている箇所は二つです。 (1)マスターページ内のLoad処理で動的にノードを追加しているのですが、 各コンテンツページ呼び出し時に再生成されてしまい、メニューの展開が初期表示時に戻ってしまいます。 どうにか、展開情報を変更しない方法や、展開情報の保持、再現などできる方法はありませんでしょうか。 (2)コンテンツページのボタン押下で、メニューを選択できないようにし、 ボタン押下の処理終了時にメニューを復元することはできないでしょうか。 メニューの制御はできればEnabled(disabled)制御がいいのですが・・・ 恐れ入りますが、宜しくお願い致します。

  • TreeViewでToolTipTextを表示しない方法

     VB6.0でTreeViewコントロールを使ってプログラミングしています。 このとき、TreeViewのノード上にカーソルを持っていくと、ToolTipTextが 自動的に表示されます。このToolTipTextの表示を禁止する方法を教えて ください。

  • TreeView の初期表示について

    TreeView に『A』『B』『C』のノードがあるとします。 初期表示を『B』ノードを選択・展開した状態(子ノードあり)にしたいのですが、 方法がわかりません。 何かよい方法はないでしょうか?よろしくお願いします。 説明不足な点はすぐに補います。

  • delphi、treeviewについて再び

    お世話になっております。 たびたびtreeviewがらみなんですが、 treeview上で、nodeのテキストを変更可能にした時、 OnEditedで該当ノードのテキストを取得しようとすると、 やり方が悪いのか、どうしても変更前のテキストしか取得できません。 変更後のテキストを取得するにはどうしたらいいのでしょう?

  • C# TreeView 効率良いノード追加の仕方

    C# TreeViewについて質問させてください。 ノード(子ノード含む)を数万件以上登録する際に、効率の良い方法を教えて頂けないでしょうか? 実際のコードとは異なりますが、大まかに以下のような処理をメインスレッドで行っています。 class MyTreeNode : TreeNode{   void AddNode(){     BeginUpdate();     SuspendLayout();     foreach( var 親ノード情報 in 親ノード情報リスト ){       TreeNode parentNode = new TreeNode( 親ノード名 );       foreach( var 子ノード情報 in 子ノード情報リスト ){         TreeNode childNode = new TreeNode( 子ノード名);         parentNode.Nodes.Add( childNode );       }       this.Nodes.Add( parentNode );     }     ResumeLayout();     EndUpdate();   } } この方法ですと、かなり時間がかかってしまい、UIが固まったようになってしまいます。 (TreeViewに、子ノードの一斉展開機能が必要なので、親ノード展開時のイベントを拾って  子ノードを追加する方法は上記と同じく遅くなってしまうのではと思っていますがどうなんでしょうか?)

  • TreeViewを反転表示したままTextBoxにカーソル

    VB2005 Expressで開発をしています。 TreeViewでノードを選択して、その値をTextBoxに表示しようと 思っています。 そこで、選択したノードを反転表示したままTextBoxにカーソル をセットすることは可能なのでしょうか。 フォーカスを当てた上体で反転されるので無理な気はするのですが、 ご存知の方がいらっしゃいましたら教えて下さい。 よろしくお願いします。

  • VB2005 TreeViewの任意ノード選択

    お世話になっております。 VB2005でWinアプリを開発中です。 ルートノードは1つで、 そこから子、孫、ひ孫・・・と階段状になるTreeViewを作っています。 親   L子      L孫         Lひ孫             ・・・・ このようなツリーに対し、プログラムで任意のノードを選択状態にしたいのですが、 ノードの名称などで一発で指定する方法はありますでしょうか?? 上の例で、「孫」を選択状態にしたい場合、 TreeView1.SelectedNode = TreeView1.Nodes(0).Nodes(0).Nodes(0) と書けば、できることはできるのですが。 他にもっとよい方法があるはずと思うのですが、見つけられませんでした。 VB6.0なら、下記に方法があったのですが・・・ http://oshiete1.goo.ne.jp/qa732490.html よろしくお願いします。

  • ASP.NET2.0 TreeView チェックボックス

    皆様、お世話になります。 長田と申します。 環境はASP.NET2.0です。 1.新規にWebフォームを作成して、その中にTreeViewとボタンを作成します。 2.TreeViewはチェックボックスを持つように設定。 3.ボタン押下時にTreeViewの中でチェックボックスを選択されているものを取得して、ラベルに表示。 ネットにてサンプルを見つけたのですが、C#なため解読できません。(泣く VB.NETでしたらどのようになりますでしょうか宜しければご教授頂きたく思ってます。 ご指導お願い致します。 TreeViewイメージ □大分類A  □中分類1   □小分類1   □小分類2   □小分類3  □中分類2   □小分類1   □小分類2   □小分類3 □大分類B  □中分類1   □小分類1 コード(※ツリービューを作る所は省略) //ボタン押下時 protected void Button1_Click(object sender, EventArgs e) {   System.Text.StringBuilder sb = new System.Text.StringBuilder();   //大分類   sb.Append(SelectNode(TV1.Nodes));   foreach (TreeNode tn in TV1.Nodes)   {     //中分類     sb.Append(SelectNode(tn.ChildNodes));     foreach (TreeNode tn2 in tn.ChildNodes)     {       //小分類       sb.Append(SelectNode(tn2.ChildNodes));     }   }   Label1.Text = sb.ToString(); } //ノードに日もづく子ノードで且つ選択されているものを取得 public static string SelectNode(TreeNodeCollection tnc) {   System.Text.StringBuilder sb = new System.Text.StringBuilder();   foreach (TreeNode tn in tnc)   {     if (tn.Checked)     {       sb.Append(tn.Text);     }   }   return sb.ToString(); }

  • TreeViewコントロールについて

    VB2005環境です。 TreeViewコントロールを作成し、ノードごとにクリックイベントを 追加して、タブコントロールを呼び出すようにしたいと考えています。 (親ノードをクリックしたら、親ノード用のタブコントロールが 画面に表示され、さらに子ノードAをクリックすると、ノードA用の タブコントロールが表示される、ノードBをクリックすると…という具合に)。 NodeMouseClickイベントを使えば良いのかとは思うのですが、クリックイベントが 子ノード各々ごとに取得できず困っています。 やり方を教えていただけないでしょうか? 更に、そこから各々専用のタブコントロールを呼び出す方法も 教えていただけるとありがたいです。 よろしくお願いします。

  • TreeViewで複数ノードの選択は可能ですか?

    VisualBasic2005でwindowsアプリの開発をしています。 今回希望として、複数のノードを一度にドラッグするというのがあるのですが、 TreeViewで複数ノードの選択は可能なのでしょうか? そして、もし可能な場合、それらを一気にドラッグということは可能でしょうか? ドロップ先では、ドラッグ中のノードのtextが取れればよいです。 よろしくお願いします。

専門家に質問してみよう