自己画,再拖个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; //调整属性
}
上面是两个方法,一个是调整分辨率,一个是把控件作为变量处理,你会了吗?
你可以看看 easy_ui的导航就和这个差不多
自己用图片加一些位置计算的算法,处理一些事件,还是可以做出来的
这个是第三方控件!C#的不带!
Dev GridControl貌似可以实现这种 估计要重写一点东西;这个东西有时间才能试试