Hi there
We are using the UltraWinGrid v19.1.20191.379 in a C# WinForm .NET 4.6.2 app and I am noticing some strange behaviour with the standard inbuilt ColumnChooser on a dual screen setup.
The application is typically maximized to the full size of one of the 2 monitors but the ColumnChooser is always being displayed on the LHS monitor regardless of which monitor is being used to display the applications window.
I can use the PC's display settings to a rearrange the order of the display but it has no affect, the column chooser is always displayed on the LHS monitor.
Is there an appropriate property\configuration to ensure the column chooser is always displayed over the owning grid control.
Regards
Geoff
Hi Geoff,
This code worked for me when I tested it out. Did you try stepping through the Dialog_Shown event and examining the coords being used for the DesktopBounds?Make sure you are using Form_Shown and not some other event like Form_Load, because the grid code is setting the location of the dialog, so you have to use Shown so that you are setting the location AFTER the grid does.
Hi Motoki
Unfortunately that does not work, still always showing the column chooser on the main primary display\screen.
Hello Geoff
Thanks for your post.It looks like a bug. The ColumnChooser remember the last location the used put it. So if it comes up on the wrong monitor and they move it to the current monitor, it will henceforth display where they moved it for the life of the application. But the initial display doesn’t take the location of the owning form into account.
I will log this issue to our development department and continue to follow as the support case. Please kindly take care of our notice.In the meantime, you can work around it like so:
private void UltraGrid1_BeforeColumnChooserDisplayed(object sender, BeforeColumnChooserDisplayedEventArgs e) { var screen = Infragistics.Win.Utilities.ScreenFromRectangle(this.Bounds); if (!screen.Bounds.Contains(e.Dialog.Bounds)) { e.Dialog.Shown += Dialog_Shown; } } private void Dialog_Shown(object sender, EventArgs e) { var dialog = (Form)sender; dialog.Shown -= Dialog_Shown; var screen = Infragistics.Win.Utilities.ScreenFromRectangle(this.Bounds); dialog.DesktopBounds = new Rectangle( screen.Bounds.X, screen.Bounds.Y, dialog.Bounds.Width, dialog.Bounds.Height ); }
Sincerely,Motoki.
Hi again
I should point out that the LHS Monitor is Monitor 1 of the 2 monitors, so the column chooser is always displayed on Monitor 1 regardless of which monitor the hosting application is being displayed on.
Hope that makes sense