I have a TreeView
with the parent node : Node0
. I add 3 subnodes
:
Node01
Node02
Node03
I have a popup menu
that is associate to each of the subnodes.
My problem: If I right-click directly to one of the subnodes, my popup does not display. So I have to Select the Subnode first and Right-click to have the popup displayed.
OpenMe
menu in the list. When clicking on this menu, a windows is supposed to open and this windows should be associated to the submenu I have clicked. How to get the Event of the right-click submenu and display Form with it?EDIT:
Look at this
private void modifySettingsToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
String s = treeView1.SelectedNode.Text;
new chartModify(s).ShowDialog();
}
catch (Exception er)
{
System.Console.WriteLine(">>>" + er.Message);
}
}
The line String s = treeView1.SelectedNode.Text;
gets the name of the selected node and not the node that have been right-clicked.
So here I have to modify this piece of code with the
private void treeview1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Button == MouseButtons.Right)
MessageBox.Show(e.Node.Name);
}
I modify it like this:
try
{
TreeNodeMouseClickEventArgs ee;
new chartModify(ee.Node.Name).ShowDialog();
}
but it does not work : Error:Use of unassigned local variable 'ee'
EDIT #2: Finaly got the solution
public string s;
private void modifySettingsToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
new chartModify(s).ShowDialog();
}
catch (Exception er)
{
System.Console.WriteLine(">>>" + er.Message);
}
}
and then
private void treeview1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
s = e.Node.Name;
menuStrip1.Show();
}
}
it works,
Thanks
C programming language is a machine-independent programming language that is mainly used to create many types of applications and operating systems such as Windows, and other complicated programs such as the Oracle database, Git, Python interpreter, and games and is considered a programming foundation in the process of ...
Compared to other languages—like Java, PHP, or C#—C is a relatively simple language to learn for anyone just starting to learn computer programming because of its limited number of keywords.
What is C? C is a general-purpose programming language created by Dennis Ritchie at the Bell Laboratories in 1972. It is a very popular language, despite being old. C is strongly associated with UNIX, as it was developed to write the UNIX operating system.
Full form of C is “COMPILE”. One thing which was missing in C language was further added to C++ that is 'the concept of CLASSES'.
You can try using the NodeMouseClick
Event it uses the TreeNodeClickEventArgs
to get the Button and the Node that was clicked.
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if(e.Button == MouseButtons.Right)
MessageBox.Show(e.Node.Name);
}
Modified Code to show Popup and created Form
public partial class Form1 : Form
{
string clickedNode;
MenuItem myMenuItem = new MenuItem("Show Me");
ContextMenu mnu = new ContextMenu();
public Form1()
{
InitializeComponent();
mnu.MenuItems.Add(myMenuItem);
myMenuItem.Click += new EventHandler(myMenuItem_Click);
}
void myMenuItem_Click(object sender, EventArgs e)
{
Form frm = new Form();
frm.Text = clickedNode;
frm.ShowDialog(this);
clickedNode = "";
}
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
clickedNode = e.Node.Name;
mnu.Show(treeView1,e.Location);
}
}
}
This will give you the treenode at a particular mouse point when your right click.
if(e.Button == MouseButtons.Right)
{
TreeNode destinationNode = ((TreeView)sender).GetNodeAt(new Point(e.X, e.Y));
//Do stuff
}
From here you should be able to open a specific popup menu.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With