none
请问 visual studio 的这个菜单栏是怎样实现的 RRS feed

  • 问题

  • 请问 visual studio 的这个菜单栏是怎样实现的

    请问他这个效果是怎样实现的,能给一个范例吗?

    例如他在最大化时可以拖动,然后将其拖动到显示器边界,又可以自动最大化等。

    2016年9月11日 9:20

答案

  • 您好 彭,

    我们可以把默认的标题栏隐藏掉,然后自定义一个新的标题栏。最后通过注册新标题栏的MouseDown事件来实现您所列的需求。以下代码供您参考。

    private void TitleBar_MouseDown(object sender, MouseButtonEventArgs e)
    {
        if (e.ChangedButton == MouseButton.Left)
        {
            if (e.ClickCount == 2)
            {
                AdjustWindowSize();
            }
            else
            {
                //当窗口最大化的时候,先更改窗口的状态,这样就可以拖动了
                if (this.WindowState == WindowState.Maximized)
                {
                    this.Top = 0;
                    this.Left = 0;
                    this.WindowState = WindowState.Normal;
                    this.Height = SystemParameters.MaximizedPrimaryScreenHeight;
                    this.Width = SystemParameters.MaximizedPrimaryScreenWidth;
                }
                Application.Current.MainWindow.DragMove();
            }
        }
    }
    private void AdjustWindowSize()
    {
        if (this.WindowState == WindowState.Maximized)
        {
            this.WindowState = WindowState.Normal;
            
        }
        else
        {
            this.WindowState = WindowState.Maximized;
            
        }
    }
    Best Regards,
    Li Wang

    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 彭123 2016年9月13日 14:19
    2016年9月12日 2:53

全部回复

  • 我理解的应该是个工具条(toolstrip),真实的标题栏被它隐藏,在VS启动比较慢的时候,可以看到隐藏标题栏的操作。


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2016年9月12日 0:03
  • 您好 彭,

    我们可以把默认的标题栏隐藏掉,然后自定义一个新的标题栏。最后通过注册新标题栏的MouseDown事件来实现您所列的需求。以下代码供您参考。

    private void TitleBar_MouseDown(object sender, MouseButtonEventArgs e)
    {
        if (e.ChangedButton == MouseButton.Left)
        {
            if (e.ClickCount == 2)
            {
                AdjustWindowSize();
            }
            else
            {
                //当窗口最大化的时候,先更改窗口的状态,这样就可以拖动了
                if (this.WindowState == WindowState.Maximized)
                {
                    this.Top = 0;
                    this.Left = 0;
                    this.WindowState = WindowState.Normal;
                    this.Height = SystemParameters.MaximizedPrimaryScreenHeight;
                    this.Width = SystemParameters.MaximizedPrimaryScreenWidth;
                }
                Application.Current.MainWindow.DragMove();
            }
        }
    }
    private void AdjustWindowSize()
    {
        if (this.WindowState == WindowState.Maximized)
        {
            this.WindowState = WindowState.Normal;
            
        }
        else
        {
            this.WindowState = WindowState.Maximized;
            
        }
    }
    Best Regards,
    Li Wang

    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 彭123 2016年9月13日 14:19
    2016年9月12日 2:53