
はじめまして。
以下の環境で開発しています。
Visual studio 2005 Version 8.0.50727.867 (vsvista.050727-8600)
.NET Framework Version 2.0.50727 SP2
Visual Basic 2005
TreeView(二階層限定)にCheckBoxを表示させて親ノードのCheckBoxをTrue/Falseすると
その子ノードのCheckBoxも全部合わせてTrue/Falseするものを作ろうとしていますが、
CheckBoxクリック時のイベントが拾えません。
どなたかご存知の方がおられましたらご教授ください。
通常のCheckBoxであればPostBackが発生するのですが、TreeViewのCheckBoxにはそのような
イベントがありません。
TreeNodeCheckChangedイベントはあるのですが、True/Falseが切り替わったあとにTreeView
のラベル選択したときに発生する中途半端なイベントなので使えません。
http://msdn.microsoft.com/ja-jp/library/system.w …
のヘルプからAfterCheckイベントを調べて試したのですが、
Imports System.Windows.Forms
Public Event AfterCheck As TreeViewEventHandler
を定義して、以下の関数を書いてみたのですが、
Private Sub node_AfterCheck(ByVal sender As Object, ByVal e As TreeViewEventArgs) Handles TreeView1.AfterCheck
~中身~
End Sub
「イベントAfterCheckが見つかりません。」とコンパイルエラーとなります。
客先の開発環境なのでバージョンアップ等はできません。
どなたかCheckBoxクリック時のイベントの拾い方をご存知の方がおられましたらご教授お願いします。
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>
sean9様
ありがとうございます!
早速試したところ、無事postbackされました!
これで子ノードにチェックを入れる以外の動きもできそうです。
助かりました!!
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
こういうことでしょうか。
sean9様
ご回答ありがとうございます。
FormではAfterCheckイベントハンドラを追加できるようなのですが、今やろうとしているWebのコントロールにはAfterCheckイベントがありませんでした。
試してみたのですがやはり構文エラーとなりました…
WebコントロールでAfterCheckができないかな~と思っています。
質問の方にWebコントロールと書いていなくて申し訳ありませんm(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) シートを選択して、1つのPDFにしたいのですが。 5 2022/10/03 20:18
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) EXCELのセル相互同期用のVBAでの不具合 3 2022/08/10 11:44
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- その他(Microsoft Office) エクセルVBA イベントの切り替え 2 2022/05/01 03:51
このQ&Aを見た人はこんなQ&Aも見ています
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
select文のwhere句に配列を入れ...
-
エクセルの関数について教えて...
-
Access パラメータクエリをcsv...
-
エラー 1068 (42000): 複数の主...
-
inner joinをすると数がおかし...
-
VIEWの元のテーブルのindexって...
-
SQLサーバから、項目の属性(型...
-
【Transact-sql】 execの結果を...
-
NOT INをNOT EXISTSで書き直したい
-
PL/SQLの変数について
-
WordpressのContact form 7でzi...
-
[SQLServer] テーブル名からカ...
-
SQLにて特定の文字を除いた検索...
-
Mysql サブクエリの使い方
-
一つ前のレコードの値と減算し...
-
Unionした最後にGROUP BYを追加...
-
Pro COBOLでは、最後執行したS...
-
カラム名でseqとidではどちらが...
-
曜日ごとのカウントの平均を求...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
select文のwhere句に配列を入れ...
-
VIEWの元のテーブルのindexって...
-
エラー 1068 (42000): 複数の主...
-
SQLにて特定の文字を除いた検索...
-
【Transact-sql】 execの結果を...
-
マイクラPC版のコマンドで効率...
-
SQL Left Join で重複を排除す...
-
sqlで、600行あるテーブルを100...
-
複数テーブルのGROUP BY の使い...
-
WordpressのContact form 7でzi...
-
クエリ表示と、ADOで抽出したレ...
-
SQLサーバから、項目の属性(型...
-
selectした大量データをinsert...
-
Access パラメータクエリをcsv...
-
副問合せの書き方について
-
inner joinをすると数がおかし...
-
insertを高速化させたい
-
[MySQL] 3つのテーブルの結合で...
おすすめ情報