I am trying to figure out how to detect when a popup menu is "showing" and when it is not. I know that the context menu has the popup callback, so I can tell when it is poppuped up, but I can't figure out how to tell if the user gets rid of it w/o clicking on one of the buttons in the menu.
Principal IT Analyst
Context menus also respond to the disposed event. I'm not sure when exactly this is called, but if it is called when the menu disappears couldn't you set a flag on the popup event and clear it on the dispose event? Then you could use it tell if the menu is currently open?
Just a guess since I've never had cause to do this.
Hi, I have being trying everything for the last hour and can't find anything in the .NET classes to make a tooltip for the treeview nodes. You can only register the tooltip for the control (the tree) whereas I need to add it for the nodes so when the mouse stops on them the tooltip will show up. I tried many tricks like using the mousepositions and getting the node name by the x and y position and then making a tooltip when the mousemove is fires and things like that. But they all reach an end point where first the code is inefficient and second one thing at least goes wrong (like the tooltip appears for ever and otherthigs like that) Does anyone know how to do this in the propper way?
The way you've described it is the way I've done it. Basically, you create a ToolTip on your form. Then in the control's OnMouseHover() event, you use the mouse position to figure out what text should be in the ToolTip, set that text on the ToolTip object, and then enable the ToolTip and show it. After that, you can either have the ToolTip timeout automatically, or keep it alive until the mouse moves out of that TreeNode's visible region.
"Have you gone mad Frink? Put down that science pole!"
In the following example, I use a Tootip control and I create a new class derived from the TreeNode class. This class contains a Tooltip property. And I display the tooltip when receiving the MouseMove event, using the GetNodeAt method to know what is the node pointed by the mouse.
class TreeViewWithTooltip: Form
private ToolTip m_tooltipCtrl = null;
public static void Main()
Text = "Tree View with tooltip";
m_tooltipCtrl = new ToolTip();
TreeView tree = new TreeView();
tree.Parent = this;
tree.Dock = DockStyle.Fill;
tree.ShowLines = true;
tree.MouseMove += new System.Windows.Forms.MouseEventHandler(tree_MouseMove);
MyTreeNode myTreeNode1 = new MyTreeNode("This is node 1");
myTreeNode1.Text = "node1";
MyTreeNode myTreeNode11 = new MyTreeNode("This is node 11");
myTreeNode11.Text = "node11";
Thanks for the code, but the problem is that I want it to act like regular tooltip which fades away after a while(without going out of the whole tree control) when staying staionary for some time.
Add the following line to your code in the event handler and you will see that the tooltip comes right back on, as soon it fades. I think it somehow calls the mousemove event when the tooltip shows up!
Or using the Win32 API, you can use MoveFileEx with a null destination file and MOVE_DELAY_UNTIL_REBOOT.
Probably worth noting, in case someone comes searching later that the first approach doesn't work on Win 9x or ME, only on NT/2K/XP. To use in 9X, you have to store some details in WININIT.INI; to use in all versions of Windows, MoveFileEx is probably your best bet.[/edit]
Paul Why don't you take a good look at yourself and describe what you see - Led Zeppelin, Misty Mountain Hop
I've developed a thin client for a project I'm working on, that gets presented with a load of assemblies to load when it connects to the hub (a web server on the network which exposes a few webservices). It then proceeds to load these assemblies using the System.Reflection.Assembly.LoadFrom(<url>) static method.
When it downloads the modules from the server I'd like to be able to display a status message to the user and update a progress bar as to the download size and progress.
This is purely from a support issue side of things, because the application either loads it from the GAC or from the server depending on the version. If a client stop working suddenly it would be nice for the user to be able to tell me when it updated the assembly.
Richard Smith wrote:
It then proceeds to load these assemblies using the System.Reflection.Assembly.LoadFrom() static method.
I'm not sure about the actual question you ask - but this isn't the preferred method for handling that scenario. I beleive the preferred method for doing this is to use a .config file for your thin client app that uses the <assemblybinding> tag to redirect the assembly loader to a URL when it looks for certain assemblies (as long as those assemblies have strong names). This will allow you to link directly to your assemblies that are to be deployed on the server, instead of having to use reflection.
So if your thin client linked to MyServerSideAssembly.dll, version=126.96.36.199, culture = neutral, public key token = 012345 , you would have a 'yourthinclient.config' file that contained something along the lines of:
You would then deploy MyServerSideAssembly.dll to a the 'your.server.com' web server.
The assembly loader will take care of downloading the assembly, caching it, and proceeding from there when the thin client tries to reference a type defined in 'MyServerSideAssembly.dll'.
Take a look at the '.Configuration file schema' in MSDN help to get a good idea of all the nifty things you can do with .config files.
"Have you gone mad Frink? Put down that science pole!"
Norm Almond: I seen some GUI's in my life but WTF is this mess Leppie: I made an app for my sister and she wouldnt use it till it was colorful enough Norm:good point leppie, from that statement I can only deduce that this GUI must be aimed at children Leppie:My sister is 25
-Norm on the MailMagic GUI
I've been developing with MFC for a fair old while now, and I'm looking into c# - but I have a couple of absolute beginners questions before a think about my "beginners project":
1. Does c# / .net have anything like the doc/view architecture? (And if so, what's it called?)
2. Can anyone recommend any good books on moving from MFC to c#? I have a couple of c# text's, but I was hoping for something that might be able to help MFC coders with the migration to c#. Or would people say that this insn't required?
Michael P Butler wrote: It is my experience that C# is very primitive compared to MFC.
Would that be a recommendation for VC++.NET?
I'm still debating which one to learn - well, actually I want to learn both, but I want to start with whichever one is more in demand to try and make my skills as desirable to employers as possible, as soon as possible.
.NET for me is only for self-training at home. C++ is brute force.
Think redistribution : to launch your .NET app, users have to download between 20MB and 180MB of MS run-times. In addition, you don't control the redistribution, unlike the MFC dlls, which means users may update the .NET run-time without telling you, and may not be able to run your app any longer then (more than 100 behaviour updates between .NET 1.0 and .NET 1.1, almost none are backward compatible).
She's so dirty, she threw a boomerang and it wouldn't even come back.