Make MenuStrip and ContextMenuStrip look more Windows-native
- Dominant language
- C#
- Stars
- 4.9k
- Forks
- 1.1k
- Avg merge
- 20h 23m
- Merged PRs (30d)
- 103
Description
* .NET Core Version: 3.0
* Have you experienced this same bug with .NET Framework?: Yes
With the removal of MainMenu and ContextMenu native wrappers in .NET Core 3.1, and no alternative for native controls, it'd be a good idea to make the replacement strip controls look and feel more native.
Including screenshots from Windows 10 and 7, and `RenderMode` set to `ManagedRenderMode` and `System` to point out differences.
### Windows 10
| Native | Strip (System) | Strip (Managed) |
| --- | --- | --- |
|  |  |  |
|  |  |  |
### Windows 7
| Native | Strip (System) | Strip (Managed) |
| --- | --- | --- |
|  |  |  |
|  |  |  |
### Additional Information
The visual differences should be obvious, but there are a few usability differences as well:
* In `RenderMode = System`, the hover highlight over a menu item with subitems - after the subitem menu becomes visible - lingers
* In the native menu, clicking on a menu item when the window is unfocused immediately activates that item; MenuStrip requires a second click
* In the native menu, pressing left arrow key when the first menu item is highlighted brings out the "right-click on window title bar" menu as if it was another menu item:

* The native menu does not take up any space in `Form.ClientHeight`; when migrating to a `MenuStrip`, you will lose 20 pixels of height
* There is a positioning difference between the native and strip context menu when invoked by a dedicated context menu key instead of a mouse
* Possibly more, this is just what I noticed after a few minutes of testing
### Test Project
The test project targets .NET Core 3.0, and opens 3 windows (native + the 2 strip variations).
[WindowsFormsStripControlsCore.zip](https://github.com/dotnet/winforms/files/3931357/WindowsFormsStripControlsCore.zip)
Contributor guide
Assessment
This issue has not been assessed yet.