Bob,
I'm not sure about #2, but #1 & #3 you can easily do with Owner Draw menus.
If you can do #2 I suspect it will need to be down with Owner Draw menus as
well...
For owner draw menus I normally derive a new class from MenuItem, set the
OwnerDraw property to yes in the constructor, then override the
OnMeasureItem & OnDrawItem methods.
The trick is the menu designer does not understand these derived classes,
what I do is design the menu as normal, then very carefully modify the
"Windows Form Designer generated code" to change
System.Windows.Forms.MenuItem to MyProject.MyMenuItem.
You can do it without deriving a class by handling the MeasureItem &
DrawItem events, however its not as clean (OOP) as deriving a class.
For more complete samples of OwnerDraw MenuItems you can refer to the source
at
www.dotnetmagic.com or Charles Petzold's book "Programming Microsoft Windows
with Microsoft Visual Basic.NET" has a sample.
Hope this helps
Jay