更新UIListBox消息处理Bug
This commit is contained in:
parent
a50b47626d
commit
fa512aee15
BIN
Bin/SunnyUI.dll
BIN
Bin/SunnyUI.dll
Binary file not shown.
BIN
Bin/SunnyUI.pdb
BIN
Bin/SunnyUI.pdb
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -35,7 +35,6 @@ namespace Sunny.UI
|
|||||||
public sealed partial class UIImageListBox : UIPanel
|
public sealed partial class UIImageListBox : UIPanel
|
||||||
{
|
{
|
||||||
private readonly ImageListBox listbox = new ImageListBox();
|
private readonly ImageListBox listbox = new ImageListBox();
|
||||||
private readonly UIPanel panel = new UIPanel();
|
|
||||||
private readonly UIScrollBar bar = new UIScrollBar();
|
private readonly UIScrollBar bar = new UIScrollBar();
|
||||||
|
|
||||||
public UIImageListBox()
|
public UIImageListBox()
|
||||||
@ -45,28 +44,18 @@ namespace Sunny.UI
|
|||||||
|
|
||||||
Padding = new Padding(2);
|
Padding = new Padding(2);
|
||||||
|
|
||||||
panel.Radius = 0;
|
|
||||||
panel.RadiusSides = UICornerRadiusSides.None;
|
|
||||||
panel.RectSides = ToolStripStatusLabelBorderSides.None;
|
|
||||||
panel.Parent = this;
|
|
||||||
panel.Width = 0;
|
|
||||||
panel.Dock = DockStyle.Right;
|
|
||||||
panel.Show();
|
|
||||||
|
|
||||||
bar.ValueChanged += Bar_ValueChanged;
|
bar.ValueChanged += Bar_ValueChanged;
|
||||||
bar.Parent = panel;
|
bar.Width = SystemInformation.VerticalScrollBarWidth + 2;
|
||||||
bar.Dock = DockStyle.Fill;
|
bar.Parent = this;
|
||||||
|
bar.Dock = DockStyle.None;
|
||||||
bar.Style = UIStyle.Custom;
|
bar.Style = UIStyle.Custom;
|
||||||
bar.Show();
|
bar.Visible = false;
|
||||||
|
|
||||||
listbox.Parent = this;
|
listbox.Parent = this;
|
||||||
listbox.Dock = DockStyle.Fill;
|
listbox.Dock = DockStyle.Fill;
|
||||||
listbox.Show();
|
listbox.Show();
|
||||||
listbox.panel = panel;
|
|
||||||
listbox.Bar = bar;
|
listbox.Bar = bar;
|
||||||
|
|
||||||
panel.SendToBack();
|
|
||||||
|
|
||||||
listbox.SelectedIndexChanged += Listbox_SelectedIndexChanged;
|
listbox.SelectedIndexChanged += Listbox_SelectedIndexChanged;
|
||||||
listbox.SelectedValueChanged += Listbox_SelectedValueChanged;
|
listbox.SelectedValueChanged += Listbox_SelectedValueChanged;
|
||||||
listbox.Click += Listbox_Click;
|
listbox.Click += Listbox_Click;
|
||||||
@ -74,6 +63,14 @@ namespace Sunny.UI
|
|||||||
listbox.BeforeDrawItem += Listbox_BeforeDrawItem;
|
listbox.BeforeDrawItem += Listbox_BeforeDrawItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override void OnSizeChanged(EventArgs e)
|
||||||
|
{
|
||||||
|
base.OnSizeChanged(e);
|
||||||
|
bar.Top = 2;
|
||||||
|
bar.Height = Height - 4;
|
||||||
|
bar.Left = Width - bar.Width - 2;
|
||||||
|
}
|
||||||
|
|
||||||
private void Listbox_BeforeDrawItem(object sender, ListBox.ObjectCollection items, DrawItemEventArgs e)
|
private void Listbox_BeforeDrawItem(object sender, ListBox.ObjectCollection items, DrawItemEventArgs e)
|
||||||
{
|
{
|
||||||
if (Items.Count != LastCount)
|
if (Items.Count != LastCount)
|
||||||
@ -146,11 +143,6 @@ namespace Sunny.UI
|
|||||||
base.SetStyleColor(uiColor);
|
base.SetStyleColor(uiColor);
|
||||||
if (uiColor.IsCustom()) return;
|
if (uiColor.IsCustom()) return;
|
||||||
|
|
||||||
if (panel != null)
|
|
||||||
{
|
|
||||||
panel.FillColor = Color.White;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bar != null)
|
if (bar != null)
|
||||||
{
|
{
|
||||||
bar.ForeColor = uiColor.PrimaryColor;
|
bar.ForeColor = uiColor.PrimaryColor;
|
||||||
@ -283,8 +275,6 @@ namespace Sunny.UI
|
|||||||
[DefaultValue(null)]
|
[DefaultValue(null)]
|
||||||
public string TagString { get; set; }
|
public string TagString { get; set; }
|
||||||
|
|
||||||
public UIPanel panel { get; set; }
|
|
||||||
|
|
||||||
public UIScrollBar Bar
|
public UIScrollBar Bar
|
||||||
{
|
{
|
||||||
get => bar;
|
get => bar;
|
||||||
@ -312,38 +302,29 @@ namespace Sunny.UI
|
|||||||
|
|
||||||
protected override void OnSizeChanged(EventArgs e)
|
protected override void OnSizeChanged(EventArgs e)
|
||||||
{
|
{
|
||||||
if (!PanelVisible)
|
SetScrollInfo();
|
||||||
{
|
|
||||||
SetScrollInfo();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetScrollInfo()
|
public void SetScrollInfo()
|
||||||
{
|
{
|
||||||
if (Bar == null || panel == null)
|
if (Bar == null)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
PanelVisible = true;
|
|
||||||
var si = ScrollBarInfo.GetInfo(Handle);
|
var si = ScrollBarInfo.GetInfo(Handle);
|
||||||
if (si.ScrollMax > 0)
|
if (si.ScrollMax > 0)
|
||||||
{
|
{
|
||||||
Bar.Maximum = si.ScrollMax;
|
Bar.Maximum = si.ScrollMax;
|
||||||
panel.Width = (si.ScrollMax > 0 && si.nMax > 0 && si.nPage > 0) ? SystemInformation.VerticalScrollBarWidth + 2 : 0;
|
Bar.Visible = si.ScrollMax > 0 && si.nMax > 0 && si.nPage > 0;
|
||||||
panel.SendToBack();
|
|
||||||
Bar.Value = si.nPos;
|
Bar.Value = si.nPos;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
panel.Width = 0;
|
Bar.Visible = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
PanelVisible = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool PanelVisible;
|
|
||||||
|
|
||||||
protected override void OnMeasureItem(MeasureItemEventArgs e)
|
protected override void OnMeasureItem(MeasureItemEventArgs e)
|
||||||
{
|
{
|
||||||
e.ItemHeight = e.ItemHeight + ItemHeight;
|
e.ItemHeight = e.ItemHeight + ItemHeight;
|
||||||
@ -363,13 +344,6 @@ namespace Sunny.UI
|
|||||||
[Browsable(false)]
|
[Browsable(false)]
|
||||||
public int Count => Items.Count;
|
public int Count => Items.Count;
|
||||||
|
|
||||||
protected override void WndProc(ref Message m)
|
|
||||||
{
|
|
||||||
base.WndProc(ref m);
|
|
||||||
//隐藏滚动条
|
|
||||||
ScrollBarInfo.ShowScrollBar(Handle, 3, false);//0:horizontal,1:vertical,3:both
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SelectedFirst()
|
public void SelectedFirst()
|
||||||
{
|
{
|
||||||
if (Count > 0 && SelectedIndex < 0)
|
if (Count > 0 && SelectedIndex < 0)
|
||||||
@ -382,7 +356,7 @@ namespace Sunny.UI
|
|||||||
{
|
{
|
||||||
base.OnMouseWheel(e);
|
base.OnMouseWheel(e);
|
||||||
|
|
||||||
if (panel.Width > 0)
|
if (Bar.Visible)
|
||||||
{
|
{
|
||||||
var si = ScrollBarInfo.GetInfo(Handle);
|
var si = ScrollBarInfo.GetInfo(Handle);
|
||||||
if (e.Delta > 10)
|
if (e.Delta > 10)
|
||||||
|
@ -36,7 +36,6 @@ namespace Sunny.UI
|
|||||||
public sealed partial class UIListBox : UIPanel
|
public sealed partial class UIListBox : UIPanel
|
||||||
{
|
{
|
||||||
private readonly ListBoxEx listbox = new ListBoxEx();
|
private readonly ListBoxEx listbox = new ListBoxEx();
|
||||||
private readonly UIPanel panel = new UIPanel();
|
|
||||||
private readonly UIScrollBar bar = new UIScrollBar();
|
private readonly UIScrollBar bar = new UIScrollBar();
|
||||||
|
|
||||||
public UIListBox()
|
public UIListBox()
|
||||||
@ -45,28 +44,18 @@ namespace Sunny.UI
|
|||||||
ShowText = false;
|
ShowText = false;
|
||||||
Padding = new Padding(2);
|
Padding = new Padding(2);
|
||||||
|
|
||||||
panel.Radius = 0;
|
|
||||||
panel.RadiusSides = UICornerRadiusSides.None;
|
|
||||||
panel.RectSides = ToolStripStatusLabelBorderSides.None;
|
|
||||||
panel.Parent = this;
|
|
||||||
panel.Width = 0;
|
|
||||||
panel.Dock = DockStyle.Right;
|
|
||||||
panel.Show();
|
|
||||||
|
|
||||||
bar.ValueChanged += Bar_ValueChanged;
|
bar.ValueChanged += Bar_ValueChanged;
|
||||||
bar.Parent = panel;
|
bar.Width = SystemInformation.VerticalScrollBarWidth + 2;
|
||||||
bar.Dock = DockStyle.Fill;
|
bar.Parent = this;
|
||||||
|
bar.Dock = DockStyle.None;
|
||||||
bar.Style = UIStyle.Custom;
|
bar.Style = UIStyle.Custom;
|
||||||
bar.Show();
|
bar.Visible = false;
|
||||||
|
|
||||||
listbox.Parent = this;
|
listbox.Parent = this;
|
||||||
listbox.Dock = DockStyle.Fill;
|
listbox.Dock = DockStyle.Fill;
|
||||||
listbox.Show();
|
listbox.Show();
|
||||||
listbox.panel = panel;
|
|
||||||
listbox.Bar = bar;
|
listbox.Bar = bar;
|
||||||
|
|
||||||
panel.SendToBack();
|
|
||||||
|
|
||||||
listbox.SelectedIndexChanged += Listbox_SelectedIndexChanged;
|
listbox.SelectedIndexChanged += Listbox_SelectedIndexChanged;
|
||||||
listbox.SelectedValueChanged += Listbox_SelectedValueChanged;
|
listbox.SelectedValueChanged += Listbox_SelectedValueChanged;
|
||||||
listbox.Click += Listbox_Click;
|
listbox.Click += Listbox_Click;
|
||||||
@ -74,6 +63,14 @@ namespace Sunny.UI
|
|||||||
listbox.BeforeDrawItem += Listbox_BeforeDrawItem;
|
listbox.BeforeDrawItem += Listbox_BeforeDrawItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override void OnSizeChanged(EventArgs e)
|
||||||
|
{
|
||||||
|
base.OnSizeChanged(e);
|
||||||
|
bar.Top = 2;
|
||||||
|
bar.Height = Height - 4;
|
||||||
|
bar.Left = Width - bar.Width - 2;
|
||||||
|
}
|
||||||
|
|
||||||
private void Listbox_BeforeDrawItem(object sender, ListBox.ObjectCollection items, DrawItemEventArgs e)
|
private void Listbox_BeforeDrawItem(object sender, ListBox.ObjectCollection items, DrawItemEventArgs e)
|
||||||
{
|
{
|
||||||
if (Items.Count != LastCount)
|
if (Items.Count != LastCount)
|
||||||
@ -137,11 +134,6 @@ namespace Sunny.UI
|
|||||||
bar.FillColor = Color.White;
|
bar.FillColor = Color.White;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (panel != null)
|
|
||||||
{
|
|
||||||
panel.FillColor = Color.White;
|
|
||||||
}
|
|
||||||
|
|
||||||
hoverColor = uiColor.TreeViewHoverColor;
|
hoverColor = uiColor.TreeViewHoverColor;
|
||||||
if (listbox != null)
|
if (listbox != null)
|
||||||
{
|
{
|
||||||
@ -246,8 +238,6 @@ namespace Sunny.UI
|
|||||||
{
|
{
|
||||||
private UIScrollBar bar;
|
private UIScrollBar bar;
|
||||||
|
|
||||||
public UIPanel panel { get; set; }
|
|
||||||
|
|
||||||
[DefaultValue(null)]
|
[DefaultValue(null)]
|
||||||
public string TagString { get; set; }
|
public string TagString { get; set; }
|
||||||
|
|
||||||
@ -281,38 +271,29 @@ namespace Sunny.UI
|
|||||||
|
|
||||||
protected override void OnSizeChanged(EventArgs e)
|
protected override void OnSizeChanged(EventArgs e)
|
||||||
{
|
{
|
||||||
if (!PanelVisible)
|
SetScrollInfo();
|
||||||
{
|
|
||||||
SetScrollInfo();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetScrollInfo()
|
public void SetScrollInfo()
|
||||||
{
|
{
|
||||||
if (Bar == null || panel == null)
|
if (Bar == null)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
PanelVisible = true;
|
|
||||||
var si = ScrollBarInfo.GetInfo(Handle);
|
var si = ScrollBarInfo.GetInfo(Handle);
|
||||||
if (si.ScrollMax > 0)
|
if (si.ScrollMax > 0)
|
||||||
{
|
{
|
||||||
Bar.Maximum = si.ScrollMax;
|
Bar.Maximum = si.ScrollMax;
|
||||||
panel.Width = (si.ScrollMax > 0 && si.nMax > 0 && si.nPage > 0) ? SystemInformation.VerticalScrollBarWidth + 2 : 0;
|
Bar.Visible = si.ScrollMax > 0 && si.nMax > 0 && si.nPage > 0;
|
||||||
panel.SendToBack();
|
|
||||||
Bar.Value = si.nPos;
|
Bar.Value = si.nPos;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
panel.Width = 0;
|
Bar.Visible = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
PanelVisible = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool PanelVisible;
|
|
||||||
|
|
||||||
public string Version { get; }
|
public string Version { get; }
|
||||||
|
|
||||||
[DefaultValue(false)]
|
[DefaultValue(false)]
|
||||||
@ -352,17 +333,17 @@ namespace Sunny.UI
|
|||||||
set => SetStyle(value);
|
set => SetStyle(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void WndProc(ref Message m)
|
// protected override void WndProc(ref Message m)
|
||||||
{
|
// {
|
||||||
base.WndProc(ref m);
|
// base.WndProc(ref m);
|
||||||
//隐藏滚动条
|
// //隐藏滚动条
|
||||||
ScrollBarInfo.ShowScrollBar(Handle, 3, false);//0:horizontal,1:vertical,3:both
|
// ScrollBarInfo.ShowScrollBar(Handle, 3, false);//0:horizontal,1:vertical,3:both
|
||||||
}
|
// }
|
||||||
|
|
||||||
protected override void OnMouseWheel(MouseEventArgs e)
|
protected override void OnMouseWheel(MouseEventArgs e)
|
||||||
{
|
{
|
||||||
base.OnMouseWheel(e);
|
base.OnMouseWheel(e);
|
||||||
if (panel.Width > 0)
|
if (Bar.Visible)
|
||||||
{
|
{
|
||||||
var si = ScrollBarInfo.GetInfo(Handle);
|
var si = ScrollBarInfo.GetInfo(Handle);
|
||||||
if (e.Delta > 10)
|
if (e.Delta > 10)
|
||||||
@ -532,15 +513,15 @@ namespace Sunny.UI
|
|||||||
{
|
{
|
||||||
if (mouseIndex != value)
|
if (mouseIndex != value)
|
||||||
{
|
{
|
||||||
if (lastIndex >= 0 && lastIndex != SelectedIndex)
|
if (lastIndex >= 0 && lastIndex >= 0 && lastIndex < Items.Count && lastIndex != SelectedIndex)
|
||||||
{
|
{
|
||||||
OnDrawItem(new DrawItemEventArgs(this.CreateGraphics(), Font, GetItemRectangle(lastIndex), lastIndex, DrawItemState.Grayed));
|
OnDrawItem(new DrawItemEventArgs(CreateGraphics(), Font, GetItemRectangle(lastIndex), lastIndex, DrawItemState.Grayed));
|
||||||
}
|
}
|
||||||
|
|
||||||
mouseIndex = value;
|
mouseIndex = value;
|
||||||
if (mouseIndex >= 0 && mouseIndex != SelectedIndex)
|
if (mouseIndex >= 0 && mouseIndex >= 0 && mouseIndex < Items.Count && mouseIndex != SelectedIndex)
|
||||||
{
|
{
|
||||||
OnDrawItem(new DrawItemEventArgs(this.CreateGraphics(), Font, GetItemRectangle(value), value, DrawItemState.HotLight));
|
OnDrawItem(new DrawItemEventArgs(CreateGraphics(), Font, GetItemRectangle(value), value, DrawItemState.HotLight));
|
||||||
}
|
}
|
||||||
|
|
||||||
lastIndex = mouseIndex;
|
lastIndex = mouseIndex;
|
||||||
|
@ -477,5 +477,117 @@ namespace Sunny.UI
|
|||||||
public bool StyleCustomMode { get; set; }
|
public bool StyleCustomMode { get; set; }
|
||||||
|
|
||||||
public string Version { get; }
|
public string Version { get; }
|
||||||
|
|
||||||
|
public TreeNode CreateNode(string text, int pageIndex)
|
||||||
|
{
|
||||||
|
return CreateNode(new NavMenuItem(text, pageIndex));
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeNode CreateNode(UIPage page)
|
||||||
|
{
|
||||||
|
return CreateNode(new NavMenuItem(page.Text, page.PageIndex));
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeNode CreateNode(NavMenuItem item)
|
||||||
|
{
|
||||||
|
TreeNode node = new TreeNode(item.Text);
|
||||||
|
Nodes.Add(node);
|
||||||
|
SetNodeItem(node, item);
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeNode CreateNode(string text, int imageIndex, int pageIndex)
|
||||||
|
{
|
||||||
|
return CreateNode(new NavMenuItem(text, pageIndex), imageIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeNode CreateNode(UIPage page, int imageIndex)
|
||||||
|
{
|
||||||
|
return CreateNode(new NavMenuItem(page.Text, page.PageIndex), imageIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeNode CreateNode(NavMenuItem item, int imageIndex)
|
||||||
|
{
|
||||||
|
TreeNode node = new TreeNode(item.Text);
|
||||||
|
Nodes.Add(node);
|
||||||
|
SetNodeItem(node, item);
|
||||||
|
node.ImageIndex = imageIndex;
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeNode CreateNode(string text, int symbol, int symbolSize, int pageIndex)
|
||||||
|
{
|
||||||
|
return CreateNode(new NavMenuItem(text, pageIndex), symbol, symbolSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeNode CreateNode(UIPage page, int symbol, int symbolSize)
|
||||||
|
{
|
||||||
|
return CreateNode(new NavMenuItem(page.Text, page.PageIndex), symbol, symbolSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeNode CreateNode(NavMenuItem item, int symbol, int symbolSize)
|
||||||
|
{
|
||||||
|
TreeNode node = new TreeNode(item.Text);
|
||||||
|
Nodes.Add(node);
|
||||||
|
SetNodeItem(node, item);
|
||||||
|
MenuHelper.SetSymbol(node, symbol, symbolSize);
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeNode CreateChildNode(TreeNode parent, string text, int pageIndex)
|
||||||
|
{
|
||||||
|
return CreateChildNode(parent, new NavMenuItem(text, pageIndex));
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeNode CreateChildNode(TreeNode parent, UIPage page)
|
||||||
|
{
|
||||||
|
return CreateChildNode(parent, new NavMenuItem(page.Text, page.PageIndex));
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeNode CreateChildNode(TreeNode parent, NavMenuItem item)
|
||||||
|
{
|
||||||
|
TreeNode childNode = new TreeNode(item.Text);
|
||||||
|
parent.Nodes.Add(childNode);
|
||||||
|
SetNodeItem(childNode, item);
|
||||||
|
return childNode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeNode CreateChildNode(TreeNode parent, int imageIndex, string text, int pageIndex)
|
||||||
|
{
|
||||||
|
return CreateChildNode(parent, imageIndex, new NavMenuItem(text, pageIndex));
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeNode CreateChildNode(TreeNode parent, int imageIndex, UIPage page)
|
||||||
|
{
|
||||||
|
return CreateChildNode(parent, imageIndex, new NavMenuItem(page.Text, page.PageIndex));
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeNode CreateChildNode(TreeNode parent, int imageIndex, NavMenuItem item)
|
||||||
|
{
|
||||||
|
TreeNode childNode = new TreeNode(item.Text);
|
||||||
|
parent.Nodes.Add(childNode);
|
||||||
|
SetNodeItem(childNode, item);
|
||||||
|
childNode.ImageIndex = imageIndex;
|
||||||
|
return childNode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeNode CreateChildNode(TreeNode parent, int symbol, int symbolSize, string text, int pageIndex)
|
||||||
|
{
|
||||||
|
return CreateChildNode(parent, symbol, symbolSize, new NavMenuItem(text, pageIndex));
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeNode CreateChildNode(TreeNode parent, int symbol, int symbolSize, UIPage page)
|
||||||
|
{
|
||||||
|
return CreateChildNode(parent, symbol, symbolSize, new NavMenuItem(page.Text, page.PageIndex));
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeNode CreateChildNode(TreeNode parent, int symbol, int symbolSize, NavMenuItem item)
|
||||||
|
{
|
||||||
|
TreeNode childNode = new TreeNode(item.Text);
|
||||||
|
parent.Nodes.Add(childNode);
|
||||||
|
SetNodeItem(childNode, item);
|
||||||
|
MenuHelper.SetSymbol(childNode, symbol, symbolSize);
|
||||||
|
return childNode;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -348,6 +348,11 @@ namespace Sunny.UI
|
|||||||
MenuHelper.SetPageIndex(node, pageIndex);
|
MenuHelper.SetPageIndex(node, pageIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetNodeSymbol(TreeNode node, int symbol, int symbolSize = 24)
|
||||||
|
{
|
||||||
|
MenuHelper.SetSymbol(node, symbol, symbolSize);
|
||||||
|
}
|
||||||
|
|
||||||
protected override void OnDrawNode(DrawTreeNodeEventArgs e)
|
protected override void OnDrawNode(DrawTreeNodeEventArgs e)
|
||||||
{
|
{
|
||||||
if (BorderStyle != BorderStyle.None)
|
if (BorderStyle != BorderStyle.None)
|
||||||
@ -411,7 +416,7 @@ namespace Sunny.UI
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (e.Selected() && e.Node.SelectedImageIndex >= 0 && e.Node.SelectedImageIndex < ImageList.Images.Count)
|
if (TreeNodeSelected(e) && e.Node.SelectedImageIndex >= 0 && e.Node.SelectedImageIndex < ImageList.Images.Count)
|
||||||
e.Graphics.DrawImage(ImageList.Images[e.Node.SelectedImageIndex], imageLeft, e.Bounds.Y + (e.Bounds.Height - ImageList.ImageSize.Height) / 2);
|
e.Graphics.DrawImage(ImageList.Images[e.Node.SelectedImageIndex], imageLeft, e.Bounds.Y + (e.Bounds.Height - ImageList.ImageSize.Height) / 2);
|
||||||
else
|
else
|
||||||
e.Graphics.DrawImage(ImageList.Images[e.Node.ImageIndex], imageLeft, e.Bounds.Y + (e.Bounds.Height - ImageList.ImageSize.Height) / 2);
|
e.Graphics.DrawImage(ImageList.Images[e.Node.ImageIndex], imageLeft, e.Bounds.Y + (e.Bounds.Height - ImageList.ImageSize.Height) / 2);
|
||||||
@ -436,6 +441,12 @@ namespace Sunny.UI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool TreeNodeSelected(DrawTreeNodeEventArgs e)
|
||||||
|
{
|
||||||
|
return e.State == TreeNodeStates.Selected || e.State == TreeNodeStates.Focused ||
|
||||||
|
e.State == (TreeNodeStates.Focused | TreeNodeStates.Selected);
|
||||||
|
}
|
||||||
|
|
||||||
[Description("展开节点后选中第一个子节点"), DefaultValue(true)]
|
[Description("展开节点后选中第一个子节点"), DefaultValue(true)]
|
||||||
public bool ExpandSelectFirst { get; set; } = true;
|
public bool ExpandSelectFirst { get; set; } = true;
|
||||||
|
|
||||||
@ -596,85 +607,116 @@ namespace Sunny.UI
|
|||||||
//隐藏滚动条
|
//隐藏滚动条
|
||||||
ScrollBarInfo.ShowScrollBar(Handle, 3, false);//0:horizontal,1:vertical,3:both
|
ScrollBarInfo.ShowScrollBar(Handle, 3, false);//0:horizontal,1:vertical,3:both
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static class TreeViewHelper
|
public TreeNode CreateNode(string text, int pageIndex)
|
||||||
{
|
|
||||||
public static bool Selected(this DrawTreeNodeEventArgs e)
|
|
||||||
{
|
{
|
||||||
return e.State == TreeNodeStates.Selected || e.State == TreeNodeStates.Focused ||
|
return CreateNode(new NavMenuItem(text, pageIndex));
|
||||||
e.State == (TreeNodeStates.Focused | TreeNodeStates.Selected);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TreeNode CreateNode(this UINavMenu navMenu, string text, int pageIndex)
|
public TreeNode CreateNode(UIPage page)
|
||||||
{
|
{
|
||||||
return navMenu.CreateNode(new NavMenuItem(text, pageIndex));
|
return CreateNode(new NavMenuItem(page.Text, page.PageIndex));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TreeNode CreateNode(this UINavMenu navMenu, UIPage page)
|
public TreeNode CreateNode(NavMenuItem item)
|
||||||
{
|
|
||||||
return navMenu.CreateNode(new NavMenuItem(page.Text, page.PageIndex));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static TreeNode CreateNode(this UINavMenu navMenu, NavMenuItem item)
|
|
||||||
{
|
{
|
||||||
TreeNode node = new TreeNode(item.Text);
|
TreeNode node = new TreeNode(item.Text);
|
||||||
navMenu.Nodes.Add(node);
|
Nodes.Add(node);
|
||||||
navMenu.SetNodeItem(node, item);
|
SetNodeItem(node, item);
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TreeNode CreateNode(this UINavBar navBar, string text, int pageIndex)
|
public TreeNode CreateNode(string text, int imageIndex, int pageIndex)
|
||||||
{
|
{
|
||||||
return navBar.CreateNode(new NavMenuItem(text, pageIndex));
|
return CreateNode(new NavMenuItem(text, pageIndex), imageIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TreeNode CreateNode(this UINavBar navBar, UIPage page)
|
public TreeNode CreateNode(UIPage page, int imageIndex)
|
||||||
{
|
{
|
||||||
return navBar.CreateNode(new NavMenuItem(page.Text, page.PageIndex));
|
return CreateNode(new NavMenuItem(page.Text, page.PageIndex), imageIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TreeNode CreateNode(this UINavBar navBar, NavMenuItem item)
|
public TreeNode CreateNode(NavMenuItem item, int imageIndex)
|
||||||
{
|
{
|
||||||
TreeNode node = new TreeNode(item.Text);
|
TreeNode node = new TreeNode(item.Text);
|
||||||
navBar.Nodes.Add(node);
|
Nodes.Add(node);
|
||||||
navBar.SetNodeItem(node, item);
|
SetNodeItem(node, item);
|
||||||
|
node.ImageIndex = imageIndex;
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TreeNode CreateChildNode(this UINavMenu navMenu, TreeNode parent, string text, int pageIndex)
|
public TreeNode CreateNode(string text, int symbol, int symbolSize, int pageIndex)
|
||||||
{
|
{
|
||||||
return navMenu.CreateChildNode(parent, new NavMenuItem(text, pageIndex));
|
return CreateNode(new NavMenuItem(text, pageIndex), symbol, symbolSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TreeNode CreateChildNode(this UINavMenu navMenu, TreeNode parent, UIPage page)
|
public TreeNode CreateNode(UIPage page, int symbol, int symbolSize)
|
||||||
{
|
{
|
||||||
return navMenu.CreateChildNode(parent, new NavMenuItem(page.Text, page.PageIndex));
|
return CreateNode(new NavMenuItem(page.Text, page.PageIndex), symbol, symbolSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TreeNode CreateChildNode(this UINavMenu navMenu, TreeNode parent, NavMenuItem item)
|
public TreeNode CreateNode(NavMenuItem item, int symbol, int symbolSize)
|
||||||
|
{
|
||||||
|
TreeNode node = new TreeNode(item.Text);
|
||||||
|
Nodes.Add(node);
|
||||||
|
SetNodeItem(node, item);
|
||||||
|
MenuHelper.SetSymbol(node, symbol, symbolSize);
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeNode CreateChildNode(TreeNode parent, string text, int pageIndex)
|
||||||
|
{
|
||||||
|
return CreateChildNode(parent, new NavMenuItem(text, pageIndex));
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeNode CreateChildNode(TreeNode parent, UIPage page)
|
||||||
|
{
|
||||||
|
return CreateChildNode(parent, new NavMenuItem(page.Text, page.PageIndex));
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeNode CreateChildNode(TreeNode parent, NavMenuItem item)
|
||||||
{
|
{
|
||||||
TreeNode childNode = new TreeNode(item.Text);
|
TreeNode childNode = new TreeNode(item.Text);
|
||||||
parent.Nodes.Add(childNode);
|
parent.Nodes.Add(childNode);
|
||||||
navMenu.SetNodeItem(childNode, item);
|
SetNodeItem(childNode, item);
|
||||||
return childNode;
|
return childNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TreeNode CreateChildNode(this UINavBar navBar, TreeNode parent, string text, int pageIndex)
|
public TreeNode CreateChildNode(TreeNode parent, int imageIndex, string text, int pageIndex)
|
||||||
{
|
{
|
||||||
return navBar.CreateChildNode(parent, new NavMenuItem(text, pageIndex));
|
return CreateChildNode(parent, imageIndex, new NavMenuItem(text, pageIndex));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TreeNode CreateChildNode(this UINavBar navBar, TreeNode parent, UIPage page)
|
public TreeNode CreateChildNode(TreeNode parent, int imageIndex, UIPage page)
|
||||||
{
|
{
|
||||||
return navBar.CreateChildNode(parent, new NavMenuItem(page.Text, page.PageIndex));
|
return CreateChildNode(parent, imageIndex, new NavMenuItem(page.Text, page.PageIndex));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TreeNode CreateChildNode(this UINavBar navBar, TreeNode parent, NavMenuItem item)
|
public TreeNode CreateChildNode(TreeNode parent, int imageIndex, NavMenuItem item)
|
||||||
{
|
{
|
||||||
TreeNode childNode = new TreeNode(item.Text);
|
TreeNode childNode = new TreeNode(item.Text);
|
||||||
parent.Nodes.Add(childNode);
|
parent.Nodes.Add(childNode);
|
||||||
navBar.SetNodeItem(childNode, item);
|
SetNodeItem(childNode, item);
|
||||||
|
childNode.ImageIndex = imageIndex;
|
||||||
|
return childNode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeNode CreateChildNode(TreeNode parent, int symbol, int symbolSize, string text, int pageIndex)
|
||||||
|
{
|
||||||
|
return CreateChildNode(parent, symbol, symbolSize, new NavMenuItem(text, pageIndex));
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeNode CreateChildNode(TreeNode parent, int symbol, int symbolSize, UIPage page)
|
||||||
|
{
|
||||||
|
return CreateChildNode(parent, symbol, symbolSize, new NavMenuItem(page.Text, page.PageIndex));
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeNode CreateChildNode(TreeNode parent, int symbol, int symbolSize, NavMenuItem item)
|
||||||
|
{
|
||||||
|
TreeNode childNode = new TreeNode(item.Text);
|
||||||
|
parent.Nodes.Add(childNode);
|
||||||
|
SetNodeItem(childNode, item);
|
||||||
|
MenuHelper.SetSymbol(childNode, symbol, symbolSize);
|
||||||
return childNode;
|
return childNode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -393,7 +393,7 @@ namespace Sunny.UI
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (e.Selected() && e.Node.SelectedImageIndex >= 0 && e.Node.SelectedImageIndex < ImageList.Images.Count)
|
if (TreeNodeSelected(e) && e.Node.SelectedImageIndex >= 0 && e.Node.SelectedImageIndex < ImageList.Images.Count)
|
||||||
e.Graphics.DrawImage(ImageList.Images[e.Node.SelectedImageIndex], imageLeft, e.Bounds.Y + (e.Bounds.Height - ImageList.ImageSize.Height) / 2);
|
e.Graphics.DrawImage(ImageList.Images[e.Node.SelectedImageIndex], imageLeft, e.Bounds.Y + (e.Bounds.Height - ImageList.ImageSize.Height) / 2);
|
||||||
else
|
else
|
||||||
e.Graphics.DrawImage(ImageList.Images[e.Node.ImageIndex], imageLeft, e.Bounds.Y + (e.Bounds.Height - ImageList.ImageSize.Height) / 2);
|
e.Graphics.DrawImage(ImageList.Images[e.Node.ImageIndex], imageLeft, e.Bounds.Y + (e.Bounds.Height - ImageList.ImageSize.Height) / 2);
|
||||||
@ -482,6 +482,12 @@ namespace Sunny.UI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool TreeNodeSelected(DrawTreeNodeEventArgs e)
|
||||||
|
{
|
||||||
|
return e.State == TreeNodeStates.Selected || e.State == TreeNodeStates.Focused ||
|
||||||
|
e.State == (TreeNodeStates.Focused | TreeNodeStates.Selected);
|
||||||
|
}
|
||||||
|
|
||||||
public string Version { get; }
|
public string Version { get; }
|
||||||
|
|
||||||
protected override void OnNodeMouseClick(TreeNodeMouseClickEventArgs e)
|
protected override void OnNodeMouseClick(TreeNodeMouseClickEventArgs e)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user