Commit 7943276c HZH

增加显示样式

1 个父辈 977a19f3
...@@ -94,6 +94,16 @@ namespace HZH_Controls.Controls ...@@ -94,6 +94,16 @@ namespace HZH_Controls.Controls
set { m_isShowFirstItem = value; } set { m_isShowFirstItem = value; }
} }
private MenuStyle m_menuStyle = MenuStyle.Fill;
/// <summary>
/// 菜单样式
/// </summary>
public MenuStyle MenuStyle
{
get { return m_menuStyle; }
set { m_menuStyle = value; }
}
private List<Control> m_lstParentItems = new List<Control>(); private List<Control> m_lstParentItems = new List<Control>();
private IMenuItem m_selectParentItem = null; private IMenuItem m_selectParentItem = null;
...@@ -125,10 +135,18 @@ namespace HZH_Controls.Controls ...@@ -125,10 +135,18 @@ namespace HZH_Controls.Controls
} }
} }
m_panChildren = new Panel(); m_panChildren = new Panel();
m_panChildren.Dock = DockStyle.Fill; if (m_menuStyle == HZH_Controls.Controls.MenuStyle.Fill)
{
m_panChildren.Dock = DockStyle.Fill;
m_panChildren.Height = 0;
}
else
{
m_panChildren.Dock = DockStyle.Top;
m_panChildren.Height = 0;
}
m_panChildren.AutoScroll = true; m_panChildren.AutoScroll = true;
this.Controls.Add(m_panChildren); this.Controls.Add(m_panChildren);
this.Controls.SetChildIndex(m_panChildren, 0);
} }
finally finally
{ {
...@@ -143,6 +161,7 @@ namespace HZH_Controls.Controls ...@@ -143,6 +161,7 @@ namespace HZH_Controls.Controls
void parentItem_SelectedItem(object sender, EventArgs e) void parentItem_SelectedItem(object sender, EventArgs e)
{ {
this.FindForm().ActiveControl = this;
IMenuItem item = sender as IMenuItem; IMenuItem item = sender as IMenuItem;
if (m_lstParentItems.Contains(sender as Control)) if (m_lstParentItems.Contains(sender as Control))
{ {
...@@ -186,45 +205,79 @@ namespace HZH_Controls.Controls ...@@ -186,45 +205,79 @@ namespace HZH_Controls.Controls
try try
{ {
ControlHelper.FreezeControl(this, true); ControlHelper.FreezeControl(this, true);
if (blnChildren) if (m_menuStyle == HZH_Controls.Controls.MenuStyle.Fill)
{ {
Control cMenu = menuitem as Control; if (blnChildren)
int index = m_lstParentItems.IndexOf(cMenu);
for (int i = 0; i <= index; i++)
{ {
m_lstParentItems[i].Dock = DockStyle.Top; Control cMenu = menuitem as Control;
this.Controls.SetChildIndex(m_lstParentItems[i], 1); int index = m_lstParentItems.IndexOf(cMenu);
for (int i = 0; i <= index; i++)
{
m_lstParentItems[i].Dock = DockStyle.Top;
this.Controls.SetChildIndex(m_lstParentItems[i], 1);
}
for (int i = index + 1; i < m_lstParentItems.Count; i++)
{
m_lstParentItems[i].Dock = DockStyle.Bottom;
this.Controls.SetChildIndex(m_lstParentItems[i], m_lstParentItems.Count);
}
m_panChildren.Controls.Clear();
int intItemHeigth = 0;
foreach (var item in menuitem.DataSource.Childrens)
{
IMenuItem parentItem = (IMenuItem)Activator.CreateInstance(m_childrenItemType);
parentItem.DataSource = item;
if (m_childrenItemStyles != null)
parentItem.SetStyle(m_childrenItemStyles);
parentItem.SelectedItem += parentItem_SelectedItem;
Control c = parentItem as Control;
if (intItemHeigth == 0)
intItemHeigth = c.Height;
c.Dock = DockStyle.Top;
m_panChildren.Controls.Add(c);
m_panChildren.Controls.SetChildIndex(c, 0);
}
//m_panChildren.MinimumSize = new Size(0, menuitem.DataSource.Childrens.Count * intItemHeigth);
} }
for (int i = index + 1; i < m_lstParentItems.Count; i++) else
{ {
m_lstParentItems[i].Dock = DockStyle.Bottom; m_panChildren.Controls.Clear();
this.Controls.SetChildIndex(m_lstParentItems[i], m_lstParentItems.Count); foreach (var item in m_lstParentItems)
{
item.Dock = DockStyle.Top;
this.Controls.SetChildIndex(item, 1);
}
} }
m_panChildren.Controls.Clear();
int intItemHeigth = 0;
foreach (var item in menuitem.DataSource.Childrens)
{
IMenuItem parentItem = (IMenuItem)Activator.CreateInstance(m_childrenItemType);
parentItem.DataSource = item;
if (m_childrenItemStyles != null)
parentItem.SetStyle(m_childrenItemStyles);
parentItem.SelectedItem += parentItem_SelectedItem;
Control c = parentItem as Control;
if (intItemHeigth == 0)
intItemHeigth = c.Height;
c.Dock = DockStyle.Top;
m_panChildren.Controls.Add(c);
m_panChildren.Controls.SetChildIndex(c, 0);
}
//m_panChildren.MinimumSize = new Size(0, menuitem.DataSource.Childrens.Count * intItemHeigth);
} }
else else
{ {
m_panChildren.Controls.Clear(); if (blnChildren)
foreach (var item in m_lstParentItems)
{ {
item.Dock = DockStyle.Top; Control cMenu = menuitem as Control;
this.Controls.SetChildIndex(item, 1); int index = m_lstParentItems.IndexOf(cMenu);
this.Controls.SetChildIndex(m_panChildren,m_lstParentItems.Count- index-1 );
m_panChildren.Controls.Clear();
int intItemHeigth = 0;
foreach (var item in menuitem.DataSource.Childrens)
{
IMenuItem parentItem = (IMenuItem)Activator.CreateInstance(m_childrenItemType);
parentItem.DataSource = item;
if (m_childrenItemStyles != null)
parentItem.SetStyle(m_childrenItemStyles);
parentItem.SelectedItem += parentItem_SelectedItem;
Control c = parentItem as Control;
if (intItemHeigth == 0)
intItemHeigth = c.Height;
c.Dock = DockStyle.Top;
m_panChildren.Controls.Add(c);
m_panChildren.Controls.SetChildIndex(c, 0);
}
m_panChildren.Height = menuitem.DataSource.Childrens.Count * intItemHeigth;
}
else
{
m_panChildren.Controls.Clear();
m_panChildren.Height = 0;
} }
} }
} }
...@@ -240,5 +293,16 @@ namespace HZH_Controls.Controls ...@@ -240,5 +293,16 @@ namespace HZH_Controls.Controls
} }
} }
public enum MenuStyle
{
/// <summary>
/// 平铺
/// </summary>
Fill = 1,
/// <summary>
/// 顶部对齐
/// </summary>
Top = 2,
}
} }
...@@ -66,7 +66,7 @@ namespace Test ...@@ -66,7 +66,7 @@ namespace Test
this.ucHorizontalList1.DataSource = lstHL; this.ucHorizontalList1.DataSource = lstHL;
List<MenuItemEntity> lstMenu = new List<MenuItemEntity>(); List<MenuItemEntity> lstMenu = new List<MenuItemEntity>();
for (int i = 0; i < 5; i++) for (int i = 0; i < 20; i++)
{ {
MenuItemEntity item = new MenuItemEntity() MenuItemEntity item = new MenuItemEntity()
{ {
...@@ -75,7 +75,7 @@ namespace Test ...@@ -75,7 +75,7 @@ namespace Test
DataSource = "这里编写一些自定义的数据源,用于扩展" DataSource = "这里编写一些自定义的数据源,用于扩展"
}; };
item.Childrens = new List<MenuItemEntity>(); item.Childrens = new List<MenuItemEntity>();
for (int j = 0; j < 5; j++) for (int j = 0; j < 20; j++)
{ {
MenuItemEntity item2 = new MenuItemEntity() MenuItemEntity item2 = new MenuItemEntity()
{ {
...@@ -87,7 +87,7 @@ namespace Test ...@@ -87,7 +87,7 @@ namespace Test
} }
lstMenu.Add(item); lstMenu.Add(item);
} }
this.ucMenu1.ChildrenItemStyles = new Dictionary<string, object>() { {"BackColor",Color.Yellow } }; this.ucMenu1.MenuStyle = MenuStyle.Top;
this.ucMenu1.DataSource = lstMenu; this.ucMenu1.DataSource = lstMenu;
} }
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!