I''m having an issue with multiple monitors and using XPMenus.
I often go back and forth between using multiple monitors and using a single monitor. The problem occurs when I design a toolbar using multiple monitors and the toolbars are on the secondary screen. If I then switch to a single monitor the toolbars are, I assume, still located on the secondary monitor. The effect is that I can not see the toolbars again unless I hook up to a secondary monitor.
Is there anyway to move the floating toolbars back to the main screen when only one monitor is being used?
Thanks for your help.
AD
Administrator
Syncfusion Team
March 18, 2005 07:59 PM UTC
Hi Jeff,
If you run the following code snippet, all your Bars will redock to the top of the your Form.
foreach (Syncfusion.Windows.Forms.Tools.XPMenus.Bar b in this.mainFrameBarManager1.Bars)
{
this.mainFrameBarManager1.GetBarControl(b).DockState = Syncfusion.Windows.Forms.Tools.CommandBarDockState.Top;
}
Additionally, this can be easily modified to place the Bars wherever you want.
Hope it helps.
Regards,
Gregory Austin
Syncfusion Inc.
JF
Jeff Fansler
March 22, 2005 06:03 PM UTC
Hi Gregory,
Your code would work well at run time. The problem I am having is at design time. Any ideas on how to solve that?
Thanks,
-Jeff
>Hi Jeff,
>
> If you run the following code snippet, all your Bars will redock to the top of the your Form.
>
>foreach (Syncfusion.Windows.Forms.Tools.XPMenus.Bar b in this.mainFrameBarManager1.Bars)
>{
> this.mainFrameBarManager1.GetBarControl(b).DockState = Syncfusion.Windows.Forms.Tools.CommandBarDockState.Top;
>}
>
>Additionally, this can be easily modified to place the Bars wherever you want.
>
>Hope it helps.
>
>Regards,
>Gregory Austin
>Syncfusion Inc.
AD
Administrator
Syncfusion Team
March 23, 2005 03:58 PM UTC
Hi Jeff,
I''ve looked into this and haven''t been able to find any built-in method to redock the Bars, since all that information is in the BarControl. Overall, my suggestion would be to avoid designing the Bars on a second monitor.
However, you can extend the MainFrameBarManager class to add that functionality, if you''re willing to trick VS .NET. You can wrap a method call in a designer attribute, and then modify that attribute to trigger the method. The following code snippet demonstrates this:
public class BarManagerExt : Syncfusion.Windows.Forms.Tools.XPMenus.MainFrameBarManager
{
public BarManagerExt() : base()
{
}
public BarManagerExt(System.ComponentModel.IContainer c, Form f) : base(c,f)
{
}
public BarManagerExt(Form f) : base(f)
{
}
[
CategoryAttribute("Functionality"),
DescriptionAttribute("Redocks the Bars then returns to False")
]
public bool NeedsRedock
{
get
{
return false;
}
set
{
if (value && this.DesignMode)
{
foreach (Syncfusion.Windows.Forms.Tools.XPMenus.Bar b in this.Bars)
{
this.GetBarControl(b).DockState = Syncfusion.Windows.Forms.Tools.CommandBarDockState.Top;
}
}
}
}
}
Regards,
Gregory Austin
Syncfusion Inc.
JF
Jeff Fansler
March 23, 2005 05:29 PM UTC
Thanks Gregory.
>Hi Jeff,
>
> I''ve looked into this and haven''t been able to find any built-in method to redock the Bars, since all that information is in the BarControl. Overall, my suggestion would be to avoid designing the Bars on a second monitor.
>
>However, you can extend the MainFrameBarManager class to add that functionality, if you''re willing to trick VS .NET. You can wrap a method call in a designer attribute, and then modify that attribute to trigger the method. The following code snippet demonstrates this:
>
>public class BarManagerExt : Syncfusion.Windows.Forms.Tools.XPMenus.MainFrameBarManager
> {
> public BarManagerExt() : base()
> {
> }
>
> public BarManagerExt(System.ComponentModel.IContainer c, Form f) : base(c,f)
> {
> }
>
> public BarManagerExt(Form f) : base(f)
> {
> }
>
> [
> CategoryAttribute("Functionality"),
> DescriptionAttribute("Redocks the Bars then returns to False")
> ]
> public bool NeedsRedock
> {
> get
> {
> return false;
> }
> set
> {
> if (value && this.DesignMode)
> {
> foreach (Syncfusion.Windows.Forms.Tools.XPMenus.Bar b in this.Bars)
> {
> this.GetBarControl(b).DockState = Syncfusion.Windows.Forms.Tools.CommandBarDockState.Top;
> }
> }
> }
> }
> }
>
>Regards,
>Gregory Austin
>Syncfusion Inc.