Figure 1: You can put any group of controls on the pop-up context menu.
Introduction
Long time ago, I wondered how Microsoft Access put an Edit control on the context menu!!! Then I got another idea… why we do not use any control(s) on the context menu??? This will make the user interface easier to use and learn and even faster. The good news here is that, you can make it the same way you design a user control or a form using the Visual Studio designer.
Background
At first, I thought we could customize the Menu. Then I discovered that this is very hard and maybe impossible. I tried to make use of the Form, but this is not the right choice because when we show it, the parent form loses its focus. A context menu shouldn't cause that. Luckily, I found a very good article "Simple Pop-up Control" by Lukasz Swiatkowski. This article shows how to display a pop up control using the ToolStripDropDown
class. Then I said, "I found it." I used that idea to make my idea: a context menu that contains any group of controls. And now, I have a new and easier implementation.
How It Works
SuperContextMenuStrip
is based on ContextMenuStrip
which adds a user control to a ToolStripControlHost
then adds the host as an item to the menu.
Using the Code
- Add a user control to your project and put any group of controls in it, the way you like, but make them
public
so that you can add event handlers to them. - Override
ProcessDialogKey
in your user control and make sure it is as shown in the sample code. - Please have a look at the
main
from source code, you will find it so easy to use it.
Known Bugs
I still have these bugs but I am working on them. If you have any idea how to solve these bugs, please help me.
- If the pop-up menu is shown and the user clicks a MenuStrip, a ToolStrip or an item on them, it does not hide. It needs two clicks to hide!!!
- The
System.Windows.Forms.ComboBox
class behaves in a strange way. It closes the container when the user clicks on the part of the combo box's dropdown list that sticks out of the container area. So, make sure that the dropdown list is totally inside the area.
Suggested Add-on Features and Ideas
- Add a small x button to close it
- Easily move it
- Allow resizing
(But I don't recommend these changes, because they violate the concept of a menu; but you may find it a good idea.) - You can use it to implement custom tool tip, intellisense menus like Visual Studio.
History
- October 2009
- Completely changed the structure (AGAIN) to make it easier to use
- June 2008
- Completely changed the structure to make it easier to use
- Solved the tab bug
- December 2007