vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: Phänomen Treeview und Kontextmenü 
Autor: Maywood
Datum: 10.12.07 15:36

Ja, das wird wohl vermutlich die einzigste Lösung sein. Aber in der Tat: das Verhalten des TreeViews hat sich wirklich in .Net 2.0 geändert. Warum auch immer. Ist das jetzt überhaupt ein Bug oder ein Feature? Wer weiss, naja, wir werden es wohl nie erfahren..

>> Dann wird aber wieder Treeview_AfterSelect ausgeführt, aber das ist für dieses Fall nicht erwünscht.

Das kannst du auch umgehen, indem du das EventArgs.Action Propery auswertest.

Lange Rede kurzer Sinn, hier mal (m)eine Lösung:
	'// 
	Private Sub TreeView1AfterSelect(ByVal sender As Object, ByVal e As _
  TreeViewEventArgs)
		If not e.Action = Windows.Forms.TreeViewAction.Unknown Then 
			debug.WriteLine ("afterselect: " + e.Node.Text)
		End If
	End Sub
 
	Private Sub TreeView1MouseUp(ByVal sender As Object, ByVal e As MouseEventArgs)
		If e.Button = Windows.Forms.MouseButtons.Right Then 
			Dim tnOld as TreeNode = CType(sender, treeview).SelectedNode 
			Dim tnCurrent As TreeNode = CType(sender, treeview).GetNodeAt (e.X, e.Y)
			If not tnCurrent Is Nothing Then 
				CType(sender, treeview).SelectedNode = tnCurrent
				Me.contextMenuStrip1.Tag = tnOld
			End If
		End If
	End Sub
 
	Private Sub ContextMenuStrip1Closed(ByVal sender As Object, ByVal e As _
  ToolStripDropDownClosedEventArgs)
		If Not Me.contextMenuStrip1.Tag Is Nothing Then 
			dim tnCurrent as TreeNode = ctype(Me.contextMenuStrip1.Tag, treenode)
			dim tnOld as treenode = tnCurrent.TreeView.SelectedNode
			tnCurrent.TreeView.SelectedNode = CType(Me.contextMenuStrip1.Tag, treenode) 
			Me.contextMenuStrip1.Tag = tnOld
		End If
	End Sub
 
	Private Sub A_ToolStripMenuItemClick(ByVal sender As Object, ByVal e As _
  EventArgs)
		dim tnOld as TreeNode = ctype(Me.contextMenuStrip1.Tag, treenode)
		debug.WriteLine ("rightclick on: " + tnOld.Text)
	End Sub
 
	Private Sub B_ToolStripMenuItemClick(ByVal sender As Object, ByVal e As _
  EventArgs)
		'// ..
	End Sub
 
	Private Sub C_ToolStripMenuItemClick(ByVal sender As Object, ByVal e As _
  EventArgs)
		'// ..
	End Sub
	'//
(ist nicht der beste Code/die beste Lösung, aber es funktioniert einwandfrei. Besser wäre es wohl, eine eigene TreeView-Klasse (incl. ContextMenu) zu erstellen)
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Phänomen Treeview und Kontextmenü1.112ClipFix07.12.07 18:26
Re: Phänomen Treeview und Kontextmenü881Maywood10.12.07 15:36
Re: Phänomen Treeview und Kontextmenü822ClipFix10.12.07 15:49
Re: Phänomen Treeview und Kontextmenü783Maywood10.12.07 16:16
Re: Phänomen Treeview und Kontextmenü754ClipFix10.12.07 16:20

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel