在c#winform中如何做出导航菜单,其效果如下图:

2024-11-28 06:36:38
推荐回答(5个)
回答(1):

自己画,再拖个timer,让他做出动画效果,无非4个按钮一个panle,pictureBox+lable。

你也可以不做成控件,直接窗体上画,简单得另人发指,拖一个Panle,N个按钮,N个子Panle,单击按钮,其他按钮名称写成变量,或者直接画按钮:

也可以直观理解为,先放好最下面一个按钮,上面的相隔按钮高度跌加

button10.Top = 最底下一个按钮高度;
button9.Top = button10.Top - button9.Height; 
...   //紧挨着排列按钮

子panle在按钮事件中触发显示、隐藏。当点按钮的时候显示为他设计的panle,定位在他正下方,容纳在空白区域,可以理解为:

panle1.visible=true;   //显示子菜单
panle2.visible=false; 
...
panle1.top=button1.top+button1.height;  //高度为button1之下
panle1.width=button1.width; //宽度和button1齐平
panle1.left=button1.left; //左边距跟button1对齐
panle1.height=button2.top-button1.top  //高度在button1和下一个按钮button2之间

这种说法理解吗?,再逼近一点我们的做法,把按钮、Panle方法写成类:

private void ReSize(string name, int H, int W, int L, int TO) where T : Control
        {
            T bu = (T)Controls[n];
            bu.Top = TO * this.Height / kuan;
            bu.Left = L * this.Width / chang;
            bu.Width = W * this.Width / chang;
            bu.Height = H * this.Height / kuan;    //按照软件长宽比例缩放
               
        } 
private void AddControl(string name, int Height, int Width, int Left, int Top) where T : Control
        {
            T bu = (T)Controls[name];
            bu.Top = Top             
            bu.Left = Left;
            bu.Width = Width;
            bu.Height = Height;    //调整属性               
        }

上面是两个方法,一个是调整分辨率,一个是把控件作为变量处理,你会了吗?

回答(2):

你可以看看 easy_ui的导航就和这个差不多

回答(3):

自己用图片加一些位置计算的算法,处理一些事件,还是可以做出来的

回答(4):

这个是第三方控件!C#的不带!

回答(5):

Dev GridControl貌似可以实现这种 估计要重写一点东西;这个东西有时间才能试试