BaoKai_202508-Wms-Jingwang..../WMS.Ctrl/DevExpressCustom/TreeListCustom.cs
2025-08-24 09:35:55 +08:00

377 lines
13 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DevExpress.XtraTreeList;
using System.Drawing;
using System.Windows.Forms;
using DevExpress.XtraTreeList.Nodes;
using System.ComponentModel;
namespace WMS.Ctrl.DevExpressCustom
{
public class TreeListCustom : TreeList
{
#region
private System.Windows.Forms.ContextMenuStrip GridControl_ContextMenu1;
private System.Windows.Forms.ToolStripMenuItem tCut;
private System.Windows.Forms.ToolStripMenuItem tCopy;
private System.ComponentModel.IContainer components;
private System.Windows.Forms.ToolStripMenuItem tPaste;
#endregion
#region
private Bitmap _Image = null;
private Boolean showRowID = true;
private int indicatorRowWidth = 40;
private ToolStripSeparator toolStripSeparator1;
private ToolStripMenuItem tExpandAll;
private ToolStripMenuItem tCollapseAll;
private bool enableAppearanceEvenRow = true;//是否允许隔行显示
#endregion
#region
/// <summary>
/// 是否显示行号
/// </summary>
[Category("自定义属性"), Description("显示行号")]
public Boolean ShowRowID
{
get { return showRowID; }
set { showRowID = value; }
}
/// <summary>
/// 默认行号宽度
/// </summary>
[Category("自定义属性"), Description("行号宽度")]
public int IndicatorRowWidth
{
get { return indicatorRowWidth; }
set { indicatorRowWidth = value; }
}
/// <summary>
/// 是否允许隔行显示
/// </summary>
[Category("自定义属性"), Description("是否允许隔行显示")]
public bool EnableAppearanceEvenRow
{
get
{
return enableAppearanceEvenRow;
}
set
{
enableAppearanceEvenRow = value;
this.Invalidate();
}
}
#endregion
#region
/// <summary>
/// 构造函数
/// </summary>
public TreeListCustom()
{
InitializeComponent();
//列表行号显示
if (ShowRowID)
{
this.IndicatorWidth = IndicatorRowWidth;
this.CustomDrawNodeIndicator -= new DevExpress.XtraTreeList.CustomDrawNodeIndicatorEventHandler(this.Tree_CustomDrawNodeIndicator);
this.CustomDrawNodeIndicator += new DevExpress.XtraTreeList.CustomDrawNodeIndicatorEventHandler(this.Tree_CustomDrawNodeIndicator);
}
//隔行色显示
if (EnableAppearanceEvenRow)
{
this.OptionsView.EnableAppearanceEvenRow = true;
this.Appearance.EvenRow.BackColor = Color.FromArgb(240, 240, 250);
}
//焦点行颜色
this.Appearance.FocusedRow.BackColor = Color.LightSteelBlue;
}
/// <summary>
/// 构造控件
/// </summary>
private void InitializeComponent()
{
this.GridControl_ContextMenu1 = new System.Windows.Forms.ContextMenuStrip();
this.tCut = new System.Windows.Forms.ToolStripMenuItem();
this.tCopy = new System.Windows.Forms.ToolStripMenuItem();
this.tPaste = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.tExpandAll = new System.Windows.Forms.ToolStripMenuItem();
this.tCollapseAll = new System.Windows.Forms.ToolStripMenuItem();
this.GridControl_ContextMenu1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
this.SuspendLayout();
//
// GridControl_ContextMenu1
//
this.GridControl_ContextMenu1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.tCut,
this.tCopy,
this.tPaste,
this.toolStripSeparator1,
this.tExpandAll,
this.tCollapseAll});
this.GridControl_ContextMenu1.Name = "GridControl_ContextMenu11";
this.GridControl_ContextMenu1.RenderMode = System.Windows.Forms.ToolStripRenderMode.System;
this.GridControl_ContextMenu1.Size = new System.Drawing.Size(146, 120);
//
// tCut
//
this.tCut.Enabled = false;
this.tCut.Name = "tCut";
this.tCut.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.T)));
this.tCut.Size = new System.Drawing.Size(145, 22);
this.tCut.Text = "剪切";
this.tCut.Click += new System.EventHandler(this.tCut_Click);
//
// tCopy
//
this.tCopy.Name = "tCopy";
this.tCopy.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C)));
this.tCopy.Size = new System.Drawing.Size(145, 22);
this.tCopy.Text = "复制";
this.tCopy.Click += new System.EventHandler(this.tCopy_Click);
//
// tPaste
//
this.tPaste.Enabled = false;
this.tPaste.Name = "tPaste";
this.tPaste.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V)));
this.tPaste.Size = new System.Drawing.Size(145, 22);
this.tPaste.Text = "粘贴";
this.tPaste.Click += new System.EventHandler(this.tPaste_Click);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(142, 6);
//
// tExpandAll
//
this.tExpandAll.Image = global::WMS.Ctrl.Properties.Resources.Book_openHS;
this.tExpandAll.Name = "tExpandAll";
this.tExpandAll.Size = new System.Drawing.Size(145, 22);
this.tExpandAll.Text = "全展开";
this.tExpandAll.Click += new System.EventHandler(this.tExpandAll_Click);
//
// tCollapseAll
//
this.tCollapseAll.Image = global::WMS.Ctrl.Properties.Resources.Book_angleHS;
this.tCollapseAll.Name = "tCollapseAll";
this.tCollapseAll.Size = new System.Drawing.Size(145, 22);
this.tCollapseAll.Text = "全收缩";
this.tCollapseAll.Click += new System.EventHandler(this.tCollapseAll_Click);
//
// TreeListCustom
//
this.ContextMenuStrip = this.GridControl_ContextMenu1;
this.GridControl_ContextMenu1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
this.ResumeLayout(false);
}
#endregion
#region TreeList节点信息
/// <summary>
/// 创建TreeList节点信息
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="entity">实体对象</param>
/// <returns></returns>
public object[] CreateNodeData<T>(T entity)
{
try
{
object[] nodeData = new object[this.Columns.Count];
// ListOperate myListOperate = new ListOperate();
for (int col = 0; col < this.Columns.Count; col++)
{
string fieldName = this.Columns[col].FieldName;
// nodeData[col] = myListOperate.GetValue(entity, fieldName);
}
return nodeData;
}
catch (Exception ex)
{
throw (ex);
}
}
#endregion
#region
/// <summary>
/// 复制
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tCopy_Click(object sender, EventArgs e)
{
try
{
object value = this.FocusedNode.GetValue(this.FocusedColumn);
string strValue = "";
if (value != null)
{
strValue = value.ToString();
}
Clipboard.SetText(strValue);
}
catch (Exception)
{ }
}
/// <summary>
/// 剪切
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tCut_Click(object sender, EventArgs e)
{
try
{
}
catch (Exception)
{ }
}
/// <summary>
/// 粘贴
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tPaste_Click(object sender, EventArgs e)
{
}
/// <summary>
/// 全展开
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tExpandAll_Click(object sender, EventArgs e)
{
try
{
if (this.Nodes.Count > 0)
{
this.Nodes[0].ExpandAll();
}
}
catch (Exception)
{ }
}
/// <summary>
/// 全收缩
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tCollapseAll_Click(object sender, EventArgs e)
{
try
{
this.CollapseAll();
if (this.Nodes.Count > 0)
{
this.Nodes[0].Expanded = true;
}
}
catch (Exception)
{ }
}
#endregion
#region
/// <summary>
/// 行号事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Tree_CustomDrawNodeIndicator(object sender, CustomDrawNodeIndicatorEventArgs e)
{
try
{
WMS.Ctrl.DevExpressCustom.TreeListCustom tmpTree = new WMS.Ctrl.DevExpressCustom.TreeListCustom();
DevExpress.Utils.Drawing.IndicatorObjectInfoArgs args = e.ObjectArgs as DevExpress.Utils.Drawing.IndicatorObjectInfoArgs;
if (args != null)
{
int rowNum = tmpTree.GetVisibleIndexByNode(e.Node) + 1;
args.DisplayText = rowNum.ToString();
}
e.ImageIndex = -1;
}
catch { }
}
#endregion
#region
/// <summary>
/// 显示导出对话框
/// </summary>
public void ShowExportDialog()
{
try
{
System.Windows.Forms.SaveFileDialog fileSave = new System.Windows.Forms.SaveFileDialog();
fileSave.InitialDirectory = System.Windows.Forms.Application.StartupPath;
fileSave.Filter = "Excel文件(*.XLS)|*.xls|Excel文件(2007/2010)(*.XLSX)|*.xlsx|文本文件(*.TXT)|*.txt|CSV文件(*.CSV)|*.csv|Pdf文件(*.Pdf)|*.pdf|Html文件(*.Html)|*.html";
fileSave.RestoreDirectory = true;
fileSave.FilterIndex = 1;
if (fileSave.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
DevExpress.XtraPrinting.ExportTarget ls_type = DevExpress.XtraPrinting.ExportTarget.Xls;
string fName = fileSave.FileName;
if (fileSave.FileName.ToLower().EndsWith(".txt"))
{
ls_type = DevExpress.XtraPrinting.ExportTarget.Text;
}
else if (fileSave.FileName.ToLower().EndsWith(".xls"))
{
ls_type = DevExpress.XtraPrinting.ExportTarget.Xls;
}
else if (fileSave.FileName.ToLower().EndsWith(".xlsx"))
{
ls_type = DevExpress.XtraPrinting.ExportTarget.Xlsx;
}
else if (fileSave.FileName.ToLower().EndsWith(".csv"))
{
ls_type = DevExpress.XtraPrinting.ExportTarget.Csv;
}
else if (fileSave.FileName.ToLower().EndsWith(".html"))
{
ls_type = DevExpress.XtraPrinting.ExportTarget.Html;
}
else if (fileSave.FileName.ToLower().EndsWith(".Pdf"))
{
ls_type = DevExpress.XtraPrinting.ExportTarget.Pdf;
}
this.ExpandAll();
this.Export(ls_type, fName);
}
}
catch (Exception ex)
{
}
}
#endregion
}
}