📄 slider_pane.cs
字号:
namespace Imps.Client.Pc.BizControls
{
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Text;
using System.Runtime.CompilerServices;
using System.Windows.Forms;
public class slider_pane : Control
{
public const bool default_dock_pos = true;
public const int default_item_height = 0x1a;
public const bool default_style = true;
private Color m_clr_background = Color.White;
private Color m_clr_frame = Color.FromArgb(0xff, 0xc3, 0xcf, 0xdd);
private Color m_clr_hotitem_bottom = Color.FromArgb(0xff, 0xff, 0xff, 0xff);
private Color m_clr_hotitem_top = Color.FromArgb(0xff, 0xe0, 0xea, 0xf4);
private Color m_clr_hottext = Color.Black;
private Color m_clr_item_bottom = Color.FromArgb(0xff, 0xff, 0xff, 0xff);
private Color m_clr_item_top = Color.FromArgb(0xff, 0xff, 0xff, 0xff);
private Color m_clr_selecteditem_bottom = Color.FromArgb(0xff, 0xff, 0xff, 0xff);
private Color m_clr_selecteditem_top = Color.FromArgb(0xff, 0xe0, 0xea, 0xf4);
private Color m_clr_selectedtext = Color.Black;
private Color m_clr_text = Color.Black;
private Color m_clr_toggleditem_bottom = Color.FromArgb(0xff, 0xf7, 0xda, 0x7c);
private Color m_clr_toggleditem_top = Color.FromArgb(0xff, 0xe8, 0x7f, 8);
protected int m_focus_index = -1;
protected int m_hot_index = -1;
private bool m_is_qqstyle;
private int m_item_padding = 2;
private Rectangle m_item_window_rect = new Rectangle(0, 0, 0, 0);
private bool m_items_dock_bottom = true;
protected int m_selected_index = -1;
protected List<slider_item> m_slider_items = new List<slider_item>();
private bool m_slider_style = true;
protected int m_toggled_index = -1;
public const int no_match = -1;
public event selected_index_changed_handler selected_index_changed;
public event selected_index_changing_handler selected_index_changing;
public int add_slider(string name, string prompt, object img, Control window)
{
slider_item _item = new slider_item(name, prompt, img, window);
_item.m_host = this;
int index = this.m_slider_items.get_Count();
this.m_slider_items.Add(_item);
this.select_slider(index);
return index;
}
public int add_slider(string name, string prompt, object img, Control window, int pane_height)
{
slider_item _item = new slider_item(name, prompt, img, window, pane_height);
_item.m_host = this;
int index = this.m_slider_items.get_Count();
this.m_slider_items.Add(_item);
this.select_slider(index);
return index;
}
public void addrange(slider_item[] array)
{
foreach (slider_item _item in array)
{
_item.m_host = this;
this.m_slider_items.Add(_item);
if (_item.window != null)
{
_item.window.Visible = false;
}
}
this.select_slider(this.m_slider_items.get_Count() - 1);
}
protected int browse_animated_item_by_pos(browse_item_handler handler, object context, Graphics g)
{
int num = -1;
int index = 0;
if (this.m_items_dock_bottom)
{
Rectangle rectangle = new Rectangle(0, base.ClientRectangle.Height - 1, base.ClientRectangle.Width - 1, base.ClientRectangle.Height - 1);
List<slider_item>.Enumerator enumerator = this.m_slider_items.GetEnumerator();
try
{
while (enumerator.MoveNext())
{
enumerator.get_Current();
MeasureItemEventArgs e = new MeasureItemEventArgs(g, index, 0x1a);
this.on_measure_item(e);
rectangle.Height = e.ItemHeight;
rectangle.Offset(0, -rectangle.Height);
browse_item_helper_arg _arg = new browse_item_helper_arg();
_arg.cancel = false;
_arg.context = context;
_arg.item_rect = rectangle;
_arg.index = index;
_arg.hitted = false;
handler(_arg);
if (index == this.m_selected_index)
{
rectangle.Offset(0, -this.m_item_window_rect.Height - 2);
}
if (_arg.hitted)
{
num = index;
}
if (_arg.cancel)
{
return num;
}
index++;
}
return num;
}
finally
{
enumerator.Dispose();
}
}
Rectangle rectangle2 = new Rectangle(0, 0, base.ClientRectangle.Width - 1, 0);
List<slider_item>.Enumerator enumerator2 = this.m_slider_items.GetEnumerator();
try
{
while (enumerator2.MoveNext())
{
enumerator2.get_Current();
MeasureItemEventArgs args2 = new MeasureItemEventArgs(g, index, 0x1a);
this.on_measure_item(args2);
rectangle2.Height = args2.ItemHeight;
browse_item_helper_arg _arg2 = new browse_item_helper_arg();
_arg2.cancel = false;
_arg2.context = context;
_arg2.item_rect = rectangle2;
_arg2.index = index;
_arg2.hitted = false;
handler(_arg2);
if (index == this.m_selected_index)
{
rectangle2.Offset(0, this.m_item_window_rect.Height + 2);
}
if (_arg2.hitted)
{
num = index;
}
if (_arg2.cancel)
{
return index;
}
rectangle2.Offset(0, rectangle2.Height);
index++;
}
}
finally
{
enumerator2.Dispose();
}
return num;
}
protected int browse_item_by_pos(browse_item_handler handler, object context, Graphics g)
{
if (this.m_slider_style)
{
return this.browse_animated_item_by_pos(handler, context, g);
}
int num = -1;
int index = 0;
if (this.m_items_dock_bottom)
{
Rectangle rectangle = new Rectangle(0, base.ClientRectangle.Height - 1, base.ClientRectangle.Width - 1, base.ClientRectangle.Height - 1);
List<slider_item>.Enumerator enumerator = this.m_slider_items.GetEnumerator();
try
{
while (enumerator.MoveNext())
{
enumerator.get_Current();
MeasureItemEventArgs e = new MeasureItemEventArgs(g, index, 0x1a);
this.on_measure_item(e);
rectangle.Height = e.ItemHeight;
rectangle.Offset(0, -rectangle.Height);
browse_item_helper_arg _arg = new browse_item_helper_arg();
_arg.cancel = false;
_arg.context = context;
_arg.item_rect = rectangle;
_arg.index = index;
_arg.hitted = false;
handler(_arg);
if (_arg.hitted)
{
num = index;
}
if (_arg.cancel)
{
return num;
}
index++;
}
return num;
}
finally
{
enumerator.Dispose();
}
}
Rectangle rectangle2 = new Rectangle(0, 0, base.ClientRectangle.Width - 1, 0);
List<slider_item>.Enumerator enumerator2 = this.m_slider_items.GetEnumerator();
try
{
while (enumerator2.MoveNext())
{
enumerator2.get_Current();
MeasureItemEventArgs args2 = new MeasureItemEventArgs(g, index, 0x1a);
this.on_measure_item(args2);
rectangle2.Height = args2.ItemHeight;
browse_item_helper_arg _arg2 = new browse_item_helper_arg();
_arg2.cancel = false;
_arg2.context = context;
_arg2.item_rect = rectangle2;
_arg2.index = index;
_arg2.hitted = false;
handler(_arg2);
if (_arg2.hitted)
{
num = index;
}
if (_arg2.cancel)
{
return index;
}
rectangle2.Offset(0, rectangle2.Height);
index++;
}
}
finally
{
enumerator2.Dispose();
}
return num;
}
protected void calculate_animated_item_window_rect()
{
int index = 0;
if (this.m_items_dock_bottom)
{
int num2 = 0;
int num3 = 0;
Rectangle rectangle = new Rectangle(0, base.ClientRectangle.Height - 1, base.ClientRectangle.Width - 1, base.ClientRectangle.Height - 1);
List<slider_item>.Enumerator enumerator = this.m_slider_items.GetEnumerator();
try
{
while (enumerator.MoveNext())
{
enumerator.get_Current();
MeasureItemEventArgs e = new MeasureItemEventArgs(null, index, 0x1a);
this.on_measure_item(e);
if (index <= this.m_selected_index)
{
num3 += e.ItemHeight;
}
num2 += e.ItemHeight;
rectangle.Height = e.ItemHeight;
rectangle.Offset(0, -rectangle.Height);
index++;
}
}
finally
{
enumerator.Dispose();
}
this.m_item_window_rect.Location = new Point((base.Location.X + base.ClientRectangle.Left) + 1, (base.Location.Y + 1) + (num2 - num3));
this.m_item_window_rect.Size = new Size(base.ClientRectangle.Width - 2, (num2 < (base.ClientRectangle.Height - 2)) ? ((base.ClientRectangle.Height - 2) - num2) : 0);
if ((((0 <= this.m_selected_index) && (this.m_slider_items.get_Count() > this.m_selected_index)) && (this.m_is_qqstyle && (0 < this.m_slider_items.get_Item(this.m_selected_index).pane_height))) && (this.m_slider_items.get_Item(this.m_selected_index).pane_height < this.m_item_window_rect.Height))
{
this.m_item_window_rect.Y += this.m_item_window_rect.Height - this.m_slider_items.get_Item(this.m_selected_index).pane_height;
this.m_item_window_rect.Height = this.m_slider_items.get_Item(this.m_selected_index).pane_height;
}
}
else
{
int num4 = 0;
int num5 = 0;
Rectangle rectangle2 = new Rectangle(0, 0, base.ClientRectangle.Width - 1, 0);
List<slider_item>.Enumerator enumerator2 = this.m_slider_items.GetEnumerator();
try
{
while (enumerator2.MoveNext())
{
enumerator2.get_Current();
MeasureItemEventArgs args2 = new MeasureItemEventArgs(null, index, 0x1a);
this.on_measure_item(args2);
if (index <= this.m_selected_index)
{
num5 += args2.ItemHeight;
}
num4 += args2.ItemHeight;
rectangle2.Height = args2.ItemHeight;
rectangle2.Offset(0, rectangle2.Height);
index++;
}
}
finally
{
enumerator2.Dispose();
}
this.m_item_window_rect.Location = new Point((base.Location.X + base.ClientRectangle.Left) + 1, ((base.Location.Y + base.ClientRectangle.Top) + 1) + num5);
this.m_item_window_rect.Size = new Size(base.ClientRectangle.Width - 2, (num4 < (base.ClientRectangle.Height - 2)) ? ((base.ClientRectangle.Height - 2) - num4) : 0);
if ((((0 <= this.m_selected_index) && (this.m_slider_items.get_Count() > this.m_selected_index)) && (this.m_is_qqstyle && (0 < this.m_slider_items.get_Item(this.m_selected_index).pane_height))) && (this.m_slider_items.get_Item(this.m_selected_index).pane_height < this.m_item_window_rect.Height))
{
this.m_item_window_rect.Height = this.m_slider_items.get_Item(this.m_selected_index).pane_height;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -