#region
|
|
using System;
|
using System.Collections.Generic;
|
using System.Drawing;
|
using CSFrameworkV5.Common;
|
using CSFrameworkV5.Core;
|
using DevExpress.XtraBars;
|
|
///*************************************************************************/
|
///*
|
///* 文件名 :ToolbarButtons.cs
|
///* 程序说明 : Toolbar自定义按钮
|
///* 原创作者 :www.csframework.com
|
///*
|
///* Copyright 2006-2021 C/S框架网 www.csframework.com
|
///*
|
///**************************************************************************/
|
|
#endregion
|
|
namespace CSFrameworkV5.Library.CommonClass
|
{
|
/// <summary>
|
/// DevExpress按钮
|
/// </summary>
|
public class DevBarButtonInfo : IButtonInfo, IDisposable
|
{
|
private int _Authority = ButtonAuthority.NONE;
|
private bool _BeginGroup;
|
private BarButtonItem _btn;
|
private OnButtonClick _clickEvent;
|
|
//是否回收完毕
|
private bool _disposed;
|
|
private bool _ErrorOccurred;
|
|
private int _Index = -1;
|
|
public DevBarButtonInfo(BarManager barManager, string name,
|
string caption, ToolBarGroup group, Image image,
|
bool beginGroup, OnButtonClick clickEvent)
|
{
|
_btn = new BarButtonItem(barManager, caption);
|
_btn.Glyph = image;
|
_btn.PaintStyle = BarItemPaintStyle.CaptionGlyph;
|
_btn.Name = name;
|
_BeginGroup = beginGroup;
|
_clickEvent = clickEvent;
|
_btn.ItemClick += OnBarItemClick;
|
|
GroupName = group.ToStringEx();
|
IsLargeButton = true;
|
Tag = caption; //默认为按钮标题
|
}
|
|
public DevBarButtonInfo(BarManager barManager, string name,
|
string caption, ToolBarGroup group, Image image,
|
bool beginGroup, bool isLargeButton, OnButtonClick clickEvent)
|
: this(barManager, name, caption, group, image, beginGroup,
|
clickEvent)
|
{
|
IsLargeButton = isLargeButton;
|
}
|
|
public int Authority
|
{
|
get => _Authority;
|
set => _Authority = value;
|
}
|
|
public bool BeginGroup => _BeginGroup;
|
|
public object Button => _btn;
|
|
public string Caption
|
{
|
get => _btn.Caption;
|
set => _btn.Caption = value;
|
}
|
|
public bool Enable
|
{
|
get => _btn.Enabled;
|
set
|
{
|
_btn.Enabled = value;
|
|
//按钮可用,设置为可见
|
if (value) Visible = true;
|
}
|
}
|
|
public bool ErrorOccurred
|
{
|
get => _ErrorOccurred;
|
set => _ErrorOccurred = value;
|
}
|
|
public string GroupName { get; set; }
|
|
public Image Image
|
{
|
get => null;
|
set { }
|
}
|
|
public int Index
|
{
|
get => _Index;
|
set => _Index = value;
|
}
|
|
public bool IsLargeButton { get; set; }
|
|
public string Name
|
{
|
get => _btn.Name;
|
set => _btn.Name = value;
|
}
|
|
public List<IButtonInfo> SubButtons => new List<IButtonInfo>();
|
|
public object Tag
|
{
|
get => _btn.Tag;
|
set => _btn.Tag = value;
|
}
|
|
public bool Visible
|
{
|
get => _btn.Visibility == BarItemVisibility.Always;
|
set => _btn.Visibility =
|
value ? BarItemVisibility.Always : BarItemVisibility.Never;
|
}
|
|
public void Dispose()
|
{
|
Dispose(true);
|
|
//使垃圾回收器不调用该对象的终结器。
|
GC.SuppressFinalize(this);
|
}
|
|
/// <summary>
|
/// 释放资源
|
/// </summary>
|
/// <param name="disposing">是否需要释放那些实现IDisposable接口的托管对象</param>
|
public void Dispose(bool disposing)
|
{
|
//已经释放,不处理
|
if (_disposed) return;
|
|
if (disposing)
|
{
|
//释放那些实现IDisposable接口的托管对象
|
}
|
|
//
|
//TODO:释放其他非托管资源
|
//
|
|
if (Image != null)
|
{
|
Image.Dispose();
|
Image = null;
|
}
|
|
//必须标记已释放
|
_disposed = true;
|
}
|
|
~DevBarButtonInfo()
|
{
|
Dispose(false);
|
}
|
|
private void OnBarItemClick(object sender, ItemClickEventArgs e)
|
{
|
if (_clickEvent != null) _clickEvent(this);
|
}
|
|
private void OnClick(object sender, EventArgs e)
|
{
|
if (_clickEvent != null) _clickEvent(this);
|
}
|
}
|
|
public class DevBarListButton : IButtonInfo, IDisposable
|
{
|
private int _Authority = ButtonAuthority.NONE;
|
private bool _beginGroup;
|
private BarSubItem _btn;
|
private OnButtonClick _clickEvent;
|
|
//是否回收完毕
|
private bool _disposed;
|
|
private bool _ErrorOccurred;
|
|
private int _Index = -1;
|
private List<IButtonInfo> _SubButtons;
|
|
public DevBarListButton(BarManager barManager, string name,
|
string caption, ToolBarGroup group, bool beginGroup,
|
bool isLargeButton, Image image,
|
OnButtonClick clickEvent, List<IButtonInfo> subItems)
|
{
|
_SubButtons = new List<IButtonInfo>();
|
_btn = new BarSubItem(barManager, caption);
|
_btn.Glyph = image;
|
_btn.PaintStyle = BarItemPaintStyle.CaptionGlyph;
|
_btn.Name = name;
|
_beginGroup = beginGroup;
|
_clickEvent = clickEvent;
|
_btn.ItemClick += OnBarItemClick;
|
|
Tag = caption; //默认为按钮标题
|
GroupName = group.ToStringEx();
|
IsLargeButton = isLargeButton;
|
|
foreach (var btn in subItems)
|
{
|
_SubButtons.Add(btn);
|
_btn.ItemLinks.Add(btn.Button as BarButtonItem);
|
}
|
}
|
|
public int Authority
|
{
|
get => _Authority;
|
set => _Authority = value;
|
}
|
|
public bool BeginGroup
|
{
|
get => _beginGroup;
|
set => _beginGroup = value;
|
}
|
|
public object Button => _btn;
|
|
public string Caption
|
{
|
get => _btn.Caption;
|
set => _btn.Caption = value;
|
}
|
|
public bool Enable
|
{
|
get => _btn.Enabled;
|
set
|
{
|
_btn.Enabled = value;
|
|
//按钮可用,设置为可见
|
if (value) Visible = true;
|
}
|
}
|
|
public bool ErrorOccurred
|
{
|
get => _ErrorOccurred;
|
set => _ErrorOccurred = value;
|
}
|
|
public string GroupName { get; set; }
|
|
public Image Image
|
{
|
get => null;
|
set { }
|
}
|
|
public int Index
|
{
|
get => _Index;
|
set => _Index = value;
|
}
|
|
public bool IsLargeButton { get; set; }
|
|
public string Name
|
{
|
get => _btn.Name;
|
set => _btn.Name = value;
|
}
|
|
public List<IButtonInfo> SubButtons => _SubButtons;
|
|
public object Tag
|
{
|
get => _btn.Tag;
|
set => _btn.Tag = value;
|
}
|
|
public bool Visible
|
{
|
get => _btn.Visibility == BarItemVisibility.Always;
|
set => _btn.Visibility =
|
value ? BarItemVisibility.Always : BarItemVisibility.Never;
|
}
|
|
public void Dispose()
|
{
|
Dispose(true);
|
|
//使垃圾回收器不调用该对象的终结器。
|
GC.SuppressFinalize(this);
|
}
|
|
/// <summary>
|
/// 释放资源
|
/// </summary>
|
/// <param name="disposing">是否需要释放那些实现IDisposable接口的托管对象</param>
|
public void Dispose(bool disposing)
|
{
|
//已经释放,不处理
|
if (_disposed) return;
|
|
if (disposing)
|
{
|
//释放那些实现IDisposable接口的托管对象
|
}
|
|
//
|
//TODO:释放其他非托管资源
|
//
|
|
if (Image != null)
|
{
|
Image.Dispose();
|
Image = null;
|
}
|
|
//必须标记已释放
|
_disposed = true;
|
}
|
|
~DevBarListButton()
|
{
|
Dispose(false);
|
}
|
|
/// <summary>
|
/// 捕捉所有由按钮事件抛出的事件!
|
/// </summary>
|
private void OnBarItemClick(object sender, ItemClickEventArgs e)
|
{
|
try
|
{
|
if (_clickEvent != null) _clickEvent(this);
|
}
|
catch (Exception ex)
|
{
|
Msg.ShowException(ex);
|
}
|
}
|
}
|
}
|