Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / Languages / C# / October 2007

Tip: Looking for answers? Try searching our database.

Treeview and ContextMenuStrip

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Joe Cool - 18 Oct 2007 00:37 GMT
Let's say I have a Treeview control on a form. Each leaf node in the
Treeview has a ContextMenuStrip, each with one ToolStripMenuItem, and
all ToolStripMenuItems Click event is handled by a comment event
handler.

How do I determine which Treeview Node signalled the menu event in the
common event handler?
Nicholas Paldino [.NET/C# MVP] - 18 Oct 2007 01:33 GMT
Joe,

   When creating the ContextMenuStrip for the nodes in the treeview
(assuming you have a separate ContextMenuStrip for each node), I would
assign the Tag property to the node in the tree view.  Then, in the event
handler, you can get the Tag property and know which node triggered the
menu.

Signature

         - Nicholas Paldino [.NET/C# MVP]
         - mvp@spam.guard.caspershouse.com

> Let's say I have a Treeview control on a form. Each leaf node in the
> Treeview has a ContextMenuStrip, each with one ToolStripMenuItem, and
[quoted text clipped - 3 lines]
> How do I determine which Treeview Node signalled the menu event in the
> common event handler?
xmail123@yahoo.com - 18 Oct 2007 01:42 GMT
Since you are already using a treeview maybe you can answer this
question for me.  I am new to C# and am trying to populate a treeview
from a SQL 2005 table.  Do you have s snippit of code that will do
that or know a URL where I can see how?

I would really appreciate the help.

Thanks

>Let's say I have a Treeview control on a form. Each leaf node in the
>Treeview has a ContextMenuStrip, each with one ToolStripMenuItem, and
[quoted text clipped - 3 lines]
>How do I determine which Treeview Node signalled the menu event in the
>common event handler?
Joe Cool - 18 Oct 2007 01:59 GMT
>Since you are already using a treeview maybe you can answer this
>question for me.  I am new to C# and am trying to populate a treeview
>from a SQL 2005 table.  Do you have s snippit of code that will do
>that or know a URL where I can see how?

Do you know how to either a) read a SQL2005 table, or b) populate a
treeview?

>I would really appreciate the help.
>
[quoted text clipped - 7 lines]
>>How do I determine which Treeview Node signalled the menu event in the
>>common event handler?
xmail123@yahoo.com - 22 Oct 2007 15:24 GMT
I can connect to the DB, create the dataadapter, populate a data set.
And I know how to add nodes to a treeview.  The problem is how to use
the dataset to populate a treeview.

I have not found a Windows Forms C# example that can handle an
unspecified level of node nesting and Parent = Child.  See child rows
15.

I would really appreciate the help.

Thank you.

I have a SQL Server 2005 table containing this data shown below.  

Child...Parent...Depth.....Hierarchy
1.........NULL.....0.........01
2..........1.......1..........01.02
5..........2.......2..........01.02.05
6..........2.......2..........01.02.06
3..........1.......1..........01.03
7..........3.......2..........01.03.07
11.........7.......3..........01.03.07.11
14.........11......4..........01.03.07.11.14
12.........7.......3..........01.03.07.12
13.........7.......3..........01.03.07.13
8..........3.......2..........01.03.08
9..........3.......2..........01.03.09
4..........1.......1..........01.04
10.........4.......2..........01.04.10
15.........NULL....0..........15
15.........15......1..........15.15
16.........15......1..........15.16
18.........16......2..........15.16.18
17.........15......1..........15.17

>>Since you are already using a treeview maybe you can answer this
>>question for me.  I am new to C# and am trying to populate a treeview
[quoted text clipped - 15 lines]
>>>How do I determine which Treeview Node signalled the menu event in the
>>>common event handler?
Jack Jackson - 22 Oct 2007 16:17 GMT
I assume that the records you get back from the dataset have the child
records after their parent.  If not, then the process becomes much
more complicated.

The brute force method is, for each record, loop through the treeview
nodes until you find the parent and add the new node.

If the Child field was unique, then you could use Child as the key for
each node.  That way you could loop through the records in the
dataset, directly locate the parent using the Parent value as the key,
and add the new node.  Yours are not unique, so unless you can modify
the data this technique will not work for you.  I'm not sure exactly
what your data looks like, but maybe you can do this if you make the
key be a combination of Child and Depth if that combination is unique.

>I can connect to the DB, create the dataadapter, populate a data set.
>And I know how to add nodes to a treeview.  The problem is how to use
[quoted text clipped - 50 lines]
>>>>How do I determine which Treeview Node signalled the menu event in the
>>>>common event handler?
xmail123@yahoo.com - 23 Oct 2007 15:54 GMT
Yes the rows in teh data set are in order.  My data looks like this.

Child...Parent...Depth.....Hierarchy
1.........NULL.....0.........01
2..........1.......1..........01.02
5..........2.......2..........01.02.05
6..........2.......2..........01.02.06
3..........1.......1..........01.03
7..........3.......2..........01.03.07
11.........7.......3..........01.03.07.11
14.........11......4..........01.03.07.11.14
12.........7.......3..........01.03.07.12
13.........7.......3..........01.03.07.13
8..........3.......2..........01.03.08
9..........3.......2..........01.03.09
4..........1.......1..........01.04
10.........4.......2..........01.04.10
15.........NULL....0..........15
15.........15......1..........15.15
16.........15......1..........15.16
18.........16......2..........15.16.18
17.........15......1..........15.17

The child nodes are not unique, a child may be it's own parent, see
15.  This is because a person may be a member of a club and also the
president of the club.

A child may also have two parents.  A person is a member of 2 clubs.

I am sure this is a common table structure but I have not found any
examples where it is used to populate a treeview.

>I assume that the records you get back from the dataset have the child
>records after their parent.  If not, then the process becomes much
[quoted text clipped - 65 lines]
>>>>>How do I determine which Treeview Node signalled the menu event in the
>>>>>common event handler?
Armin Zingler - 23 Oct 2007 16:14 GMT
> Yes the rows in teh data set are in order.  My data looks like this.
>
[quoted text clipped - 27 lines]
> I am sure this is a common table structure but I have not found any
> examples where it is used to populate a treeview.

I think this is not possible in one treeview.

It seems you are mixing different criteria. (president, member, club). What
are the child and parent IDs? What do the hierarchy levels mean? What is at
the top level and what is below?

Armin
Phill W. - 18 Oct 2007 15:40 GMT
> Let's say I have a Treeview control on a form. Each leaf node in the
> Treeview has a ContextMenuStrip, each with one ToolStripMenuItem, and
[quoted text clipped - 3 lines]
> How do I determine which Treeview Node signalled the menu event in the
> common event handler?

The ContextMenuStrip will be passed as the "sender" argument to the
event handler, as in

   Sub xyz_Click( sender as Object, e as EventArgs )

      Dim cms as ContextMenuStrip _
         = DirectCast( sender, ContextMenuStrip )

From that, you can get the control that caused the ContextMenuStrip to
be shown, which will either be the TreeView or the TreeNode (I can't
remember which), as in

either
   Dim tn as TreeNode _
      = cms.SourceControl
or
   Dim tn as TreeNode _
      = DirectCast(cms.SourceControl,TreeView).SelectedNode

HTH,
   Phill  W.
treeview - 23 Oct 2007 10:29 GMT
can u send the sample code to create different contextmenu for different
levels in a treeview...

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.