-1
私は実行時にいくつかのツリービューを作成しており、これらのツリービューの1つで選択されたノードの値を取得する必要があります。どうすればこれを達成できますか? Google検索で有用な回答が返ってこなかった動的なツリービューからノードを選択
私は実行時にいくつかのツリービューを作成しており、これらのツリービューの1つで選択されたノードの値を取得する必要があります。どうすればこれを達成できますか? Google検索で有用な回答が返ってこなかった動的なツリービューからノードを選択
Private Sub line_balancing_context_Opening(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles line_balancing_context.Opening
Dim wksnum1 As Integer = 0
Dim wksact As Integer = 0
Dim wkstations1() As String = Nothing
Dim wksactivity() As String = Nothing
Dim currentsheet As String
Dim stationtree1 As TreeView
Dim actname As TreeNode = Nothing
Dim item As ContextMenuStrip
Dim subitem() As ToolStripDropDownButton
For Each Control In display_splitcontainer.Panel1.Controls
If TypeOf Control Is TreeView Then
If MouseIsOverControl(Control) = True Then
stationtree1 = New TreeView
stationtree1 = Control
startsheet = stationtree1.Name
End If
End If
Next
line_balancing_context.Items.Clear()
osheet = obooks.ActiveSheet
currentsheet = osheet.Name
osheet = obooks.Worksheets("Relations Form")
orng = osheet.Range("A1")
Do Until orng.Value Is Nothing
orng = orng.Offset(, 1)
wksnum1 = wksnum1 + 1
ReDim Preserve wkstations1(0 To wksnum1)
wkstations1(wksnum1 - 1) = orng.Value
Loop
For Me.i = 0 To wkstations1.Length - 1
If Not wkstations1(i) Is Nothing Then
line_balancing_context.Items.Add(wkstations1(i))
End If
Next
osheet = obooks.Worksheets(currentsheet)
osheet.Activate()
End Sub
Private Sub linebalancingcontext_ItemClicked(ByVal sender As Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles line_balancing_context.ItemClicked
sheetname = e.ClickedItem.Text
Dim stationtree1 As TreeView
Dim actname As TreeNode = Nothing
Dim stationtree2 As TreeView
For Each Control In display_splitcontainer.Panel1.Controls
If TypeOf Control Is TreeView Then
stationtree1 = New TreeView
stationtree1 = Control
If stationtree1.Name = startsheet Then
If Not stationtree1.SelectedNode Is Nothing Then
actname = stationtree1.SelectedNode
actname.Remove()
Exit For
End If
End If
End If
Next
For Each Control In display_splitcontainer.Panel1.Controls
If TypeOf Control Is TreeView Then
stationtree2 = New TreeView
stationtree2 = Control
If stationtree2.Name = sheetname Then
If stationtree2.Nodes.ContainsKey(actname.Text) Then
actname.Remove()
End If
stationtree2.Nodes.Add(actname)
Exit For
End If
End If
Next
If MTM_analyser.worksheetexists(startsheet & "M") Then
osheet = obooks.Worksheets(startsheet & "M")
osheet.Activate()
With osheet.UsedRange
orng = .Find("Description of Action")
col1 = orng.Column
orng = .Find("Parent Activity")
col2 = orng.Column
End With
orng = osheet.Range(Chr(64 + col1) & ":" & Chr(64 + col1)).Find(actname.Text)
If Not orng Is Nothing Then
parent1 = CType(osheet.Cells(orng.Row, col2), excel.Range).Value
Dim some As String = "A" & orng.Row & ":" & "XFD" & orng.Row
osheet.Range(some).Cut()
object1 = osheet.Range(some)
osheet2 = obooks.Worksheets(sheetname & "M")
osheet2.Activate()
row1 = lastrowmtm(sheetname & "M")
If parent1 = startsheet Then
Dim some1 As String = "A" & row1 & ":" & "XFD" & row1
If Not object1 Is Nothing Then
osheet2.Range(some1).Insert(, object1)
End If
CType(osheet.Cells(row1, col2), excel.Range).Value = sheetname
object1 = Nothing
End If
End If
End If
transferactivity(actname)
End Sub
Sub transferactivity(ByVal aTreeNode As TreeNode)
Dim n As TreeNode
sheetnum = 0
For Each n In aTreeNode.Nodes
transferRecursive(n)
Next
End Sub
Private Sub transferRecursive(ByVal n As TreeNode)
System.Diagnostics.Debug.WriteLine(n.Text)
If MTM_analyser.worksheetexists(startsheet & "M") Then
osheet = obooks.Worksheets(startsheet & "M")
osheet.Activate()
With osheet.UsedRange
orng = .Find("Description of Action")
col1 = orng.Column
orng = .Find("Parent Activity")
col2 = orng.Column
End With
orng = osheet.Range(Chr(64 + col1) & ":" & Chr(64 + col1)).Find(n.Text)
If Not orng Is Nothing Then
parent1 = CType(osheet.Cells(orng.Row, col2), excel.Range).Value
Dim some As String = "A" & orng.Row & ":" & "XFD" & orng.Row
osheet.Range(some).Cut()
object1 = osheet.Range(some)
osheet2 = obooks.Worksheets(sheetname & "M")
osheet2.Activate()
If parent1 = startsheet Then
MsgBox("woaah")
Else
orng2 = osheet2.Range(Chr(64 + col1) & ":" & Chr(64 + col1)).Find(parent1)
osheet2.Range("A" & orng2.Row + 1 & ":" & "XFD" & orng2.Row + 1).Insert(, object1)
osheet.Range(some).EntireRow.Delete()
End If
End If
End If
Dim aNode As TreeNode
For Each aNode In n.Nodes
transferactivity(aNode)
Next
End Sub
私はtは私が別の場所にそれに接続されているデータと一緒にノードをシフトすることを可能にポップアップするコンテキストメニューを使用しています。データ処理がExcelで行われているので、ノードのすべての情報を取得する必要がありました。
私が今直面する問題は、最初のノードが選択されるとコンテキストストリップを取得するためにノードを直接右クリックすることができないことです。この問題を解決するにはクリックされたノードが選択されません。
こんにちはと歓迎するスタックオーバーフロー!あなたは、いくつかのコードを、私たちに提供しなければなりませんし、あなたが欲しいものと、この "価値"が得たいものをより完全に説明してください。読んでみると[質問する](http://stackoverflow.com/help/how-to-ask)と[最小限で完全で検証可能なサンプルを作成する方法](http://stackoverflow.com/ヘルプ/ mcve)。 –
'TreeView'はデザイナーのフォームに追加するのか、実行時に作成するのかにかかわらず、' TreeView'です。その 'TreeView'への参照を取得したら、それを一方向にしか使用しません。つまり、実行時に 'TreeView'を作成すると、後でアクセスできるどこかの参照を保持する必要があります。あなたの状況に最も適しているかどうかに応じて、 'List(Of Treeview)'やそれ以外のものがあるかもしれません。 – jmcilhinney
okだから、以前に尋ねられたノードのテキスト(値)を取得する問題を解決できました。 使用されているコードは以下に示されていますが、今は新しい問題があります。 も下記のとおりです –