• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:TreeViewのCheckBoxについて)

TreeViewのCheckBoxについて

このQ&Aのポイント
  • Visual Studio 2005で開発している環境で、TreeViewにCheckBoxを表示させて親ノードのCheckBoxをクリックすると子ノードのCheckBoxも一括で操作したいと考えています。
  • 通常のCheckBoxと異なり、TreeViewのCheckBoxにはクリックイベントが存在しないため、AfterCheckイベントを使う方法を試しましたが、コンパイルエラーが発生しました。
  • バージョンアップができないため、CheckBoxクリック時のイベントの拾い方について、教えていただけると助かります。

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

  • ベストアンサー
  • sean9
  • ベストアンサー率86% (26/30)
回答No.2

No.1のsean9です。 ちゃんと読んでいればWebコントロールだとわかりますね・・・早とちりしてすみません。 では本題に。 以下のjavascriptでどうでしょう。 TreeView1_TreeNodeCheckChanged内で子ノードのチェック処理します。 <script type="text/javascript"> function fire() { var element = window.event.srcElement; var id = event.srcElement.id; id = id.replace("TreeView1t", "TreeView1n"); id = id.replace("CheckBox", ""); var ch = document.getElementById(id); if (ch != null && element.tagName == "INPUT" && element.type == "checkbox") { __doPostBack("", ""); } } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:TreeView ID="TreeView1" runat="server" ShowCheckBoxes="All"> <Nodes> <asp:TreeNode Text="node1" > <asp:TreeNode Text="childNode1" /> <asp:TreeNode Text="childNode2" /> </asp:TreeNode> </Nodes> </asp:TreeView> </div> </form> <script type="text/javascript"> if (document.all) { document.getElementById('TreeView1').onclick = fire; } </script> </body> </html>

OU813
質問者

お礼

sean9様 ありがとうございます! 早速試したところ、無事postbackされました! これで子ノードにチェックを入れる以外の動きもできそうです。 助かりました!!

その他の回答 (1)

  • sean9
  • ベストアンサー率86% (26/30)
回答No.1

こんにちは。普段C#ばかりでVisualBasicで書いたことがないので、書き方が的確ではないかも知れませんが大目に見てください。 TreeViewのAfterCheckを使います。 (1)イベントハンドラの追加 AddHandler TreeView1.AfterCheck, AddressOf TreeView1_AfterCheck (2)イベントハンドラでの処理 Private Sub TreeView1_AfterCheck(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Dim treeNode As TreeNode treeNode = e.Node If e.Action <> TreeViewAction.Unknown Then Dim activeNode As TreeNode activeNode = e.Node For Each node As TreeNode In activeNode.Nodes node.Checked = activeNode.Checked Next End If End Sub こういうことでしょうか。

OU813
質問者

お礼

sean9様 ご回答ありがとうございます。 FormではAfterCheckイベントハンドラを追加できるようなのですが、今やろうとしているWebのコントロールにはAfterCheckイベントがありませんでした。 試してみたのですがやはり構文エラーとなりました… WebコントロールでAfterCheckができないかな~と思っています。 質問の方にWebコントロールと書いていなくて申し訳ありませんm(_ _)m

関連するQ&A