Hi,
I have an issue/query if you wouldn't mind help me out with please.
When using multiple monitors, if the main monitor is on scale and layout 100% and the 2nd monitor is 150%. When showing the context menu it blows the menu up even when shown on the main screen (see attached images).
Is there any way to disable Scale and Layout affecting the scale of the context menu or for the context menu to determine which screen it's being displayed on and use the Scale and Layout for that monitor?
Thanks.
Hello, Matt,
The provided sample project is greatly appreciated.
The first thing that I have noticed is that the referred assemblies in the project are with version 2017.1.221.40:
Please have in mind that Telerik UI for WinForms suite introduced built-in HDPI support in R2 2017. Additional information is available here: https://docs.telerik.com/devtools/winforms/telerik-presentation-framework/dpi-support I would recommend you to upgrade to the latest version in order to ensure that you have all introduced improvements related to DPI scaling.
I have attached a sample gif file illustrating how to access the app. manifest file in VB.NET. The above referred article demonstrates what exactly needs to be added to the app.manifest file in order to make the application DPI-aware.
Should you have further questions please let me know.
Regards,
Dess | Tech Support Engineer, Sr.
Progress Telerik
Regards,
Dess | Tech Support Engineer, Sr.
Progress Telerik
Hi Dess,
Thank you for replying!
After looking further into it, it's not that simple to replicate, my apologies.
I have a video module in my software so my main screen is shown on monitor 1, then my video form is shown on monitor 2 (150%).
To replicate the issue, your video was right. If you had a 2nd form i.e. RadForm2 and show that form using:
Private Sub RadForm1_Load(sender As Object, e As EventArgs) Handles Me.Load
RadForm2.Show(Me)
End Sub
Move RadForm1 to monitor 1 (100%), then move RadForm2 to monitor 2 (150%). Show the context menu on RadForm1 and you will see the menu is blown up.
One would presume it's due to the fact RadForm2 has been shown setting the owner IWin32Window to RadForm1.
I hope this helps explain further.
Kind regards,
Matt
Hi, Matt,
Please refer to the sample video demonstrating the behavior on my end: https://1drv.ms/v/s!AnnV2HsINMD_yw8EXX3yZ3Ez2XNU?e=4TwvuW The same behavior is observed with FormBorderStyle=None.
The context menu seems to be scaled properly on my end on both monitors. I have attached my sample project. Am I missing something? Could you please specify the exact steps how to reproduce the problem?
Could you please confirm that the dpiAware flag in the app.manifest is set to true/PM on your end? If it is just set to true, please give it a try with true/PM value.
I am looking forward to your reply.
Regards,
Dess | Tech Support Engineer, Sr.
Progress Telerik
Hi,
Thank you for your response.
I changed the code to include the control in the Show method but to no avale.
After further investigations, I believe I have found the cause of the problem but can't figure out what I need to do to fix it.
If you follow the scenario as in this thread with multiple monitors, scale and layout etc. But make the main form maximized and set FormBorderStyle=None. Then add an object, context menu, show the context menu and it takes the scale layout from the 2nd monitor.
Hope this helps understand/replicate the issue and be able to provide a workaround please?
Thanks.
Kind regards,
Matt
I have logged it in our feedback portal by making this thread public on your behalf. You can track its progress, subscribe for status changes and add your comments on the following link - feedback item.
I have also updated your Telerik points.
Currently, the possible solution that I can suggest is to use this overload for the Show method that accepts a target control along with the X,Y coordinates. Thus, knowing on which monitor the control is displayed, the scale factor will be considered when showing the menu.
I hope this information helps. If you need any further assistance please don't hesitate to contact me.Regards,
Dess | Tech Support Engineer, Sr.
Progress Telerik
Hi,
Thank you for your quick response.
I am simply using a standard RadContextMenu showing for example:
mnuExit.Show(cmdExitMenu.Left, cmdExitMenu.Top)
I'm not sure there is much need to send a project as all you have to do is:
To replicate the issue you will need:
Hope this helps explain further and you are able to replicate the issue. Do not hestitate to ask me any further questions.
Kind regards,
Matt
Regards,
Dess | Tech Support Engineer, Sr.
Progress Telerik