225 lines
7.7 KiB
C#
225 lines
7.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using DevExpress.XtraTreeList;
|
|
using DevExpress.XtraTreeList.Columns;
|
|
using DevExpress.XtraTreeList.ViewInfo;
|
|
using Lskj.Control.Model;
|
|
using Lskj.Core;
|
|
using Lskj.Model;
|
|
using Lskj.PubModuleDetail;
|
|
|
|
namespace cs2
|
|
{
|
|
public partial class Form1 : Form
|
|
{
|
|
public Form1()
|
|
{
|
|
InitializeComponent();
|
|
//DBConfig.Instance.ServerName = "221.10.118.38,9993";
|
|
//DBConfig.Instance.DataBase = "lserp_cy";
|
|
ERPInfo.Instance.UserId ="1";
|
|
DBConfig.Instance.CreateConnection();
|
|
|
|
}
|
|
|
|
|
|
|
|
private void Form1_Load(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
|
|
|
|
richTextBox.ReadOnly = true; // 设置为只读模式
|
|
|
|
// 设置文本内容和超链接部分
|
|
string text = "点击https://b.vip166.com/打开示例网站,并查看更多信息。";
|
|
string url = "https://b.vip166.com/";
|
|
richTextBox.Text = text;
|
|
|
|
// 在文本中插入超链接部分
|
|
int linkStart = text.IndexOf("https://b.vip166.com/"); // 查找超链接文本的位置
|
|
int linkLength = "https://b.vip166.com/".Length;
|
|
|
|
// 选择文本并将其设置为超链接
|
|
richTextBox.Select(linkStart, linkLength);
|
|
richTextBox.SelectionColor = System.Drawing.Color.Blue;
|
|
richTextBox.SelectionFont = new System.Drawing.Font(richTextBox.Font, System.Drawing.FontStyle.Underline);
|
|
|
|
// 捕获点击事件,打开网页
|
|
richTextBox.LinkClicked += RichTextBox_LinkClicked;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
treeList1.ColumnPanelRowHeight = 50;
|
|
treeList1.Bands.AddBand("测试");
|
|
|
|
//TreeListBand treeListBand = new TreeListBand();
|
|
//treeListBand.Caption = "测试2";
|
|
|
|
// 添加列
|
|
for (int i = 1; i < 4; i++)
|
|
{
|
|
|
|
TreeListColumn gridColumn = new TreeListColumn();
|
|
gridColumn.FieldName = "" + i;
|
|
gridColumn.Name = "" + i;
|
|
gridColumn.Caption = "" + i;
|
|
gridColumn.Width = 50;
|
|
|
|
gridColumn.VisibleIndex = i;
|
|
gridColumn.Visible = true;
|
|
|
|
gridColumn.OptionsFilter.FilterPopupMode = FilterPopupMode.CheckedList;
|
|
gridColumn.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
|
|
|
|
// treeListBand.Columns.Add(gridColumn);
|
|
|
|
treeList1.Bands[0].Columns.Add(gridColumn);
|
|
//this.treeList1.Columns.AddRange(new TreeListColumn[] { gridColumn });
|
|
|
|
}
|
|
//this.treeList1.Bands.Add(treeListBand);
|
|
//treeList1.Columns.AddField("Column1").Caption = "Column 1";
|
|
//treeList1.Columns.AddField("Column2").Caption = "Column 2";
|
|
//treeList1.Columns.AddField("Column3").Caption = "Column 3";
|
|
|
|
// 绑定数据
|
|
treeList1.AppendNode(new object[] { "Data1", "Data2", "Data3" }, null);
|
|
treeList1.AppendNode(new object[] { "Data4", "Data5", "Data6" }, null);
|
|
|
|
// 订阅 CustomDrawColumnHeader 事件
|
|
//treeList1.CustomDrawColumnHeader += TreeList1_CustomDrawColumnHeader;
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
}
|
|
|
|
}
|
|
|
|
private void RichTextBox_LinkClicked(object sender, LinkClickedEventArgs e)
|
|
{
|
|
if (e.LinkText == "https://b.vip166.com/")
|
|
{
|
|
System.Diagnostics.Process.Start("https://b.vip166.com/");
|
|
}
|
|
}
|
|
|
|
private void TreeList1_CustomDrawColumnHeader(object sender, CustomDrawColumnHeaderEventArgs e)
|
|
{
|
|
// 获取所有列
|
|
TreeListColumn[] columns = treeList1.Columns.ToArray();
|
|
|
|
// 遍历列,检查是否需要合并
|
|
for (int i = 0; i < columns.Length; i++)
|
|
{
|
|
// 获取当前列的表头名称
|
|
string currentCaption = columns[i].Caption;
|
|
|
|
// 查找相邻列是否有相同名称
|
|
int mergeCount = 1;
|
|
for (int j = i + 1; j < columns.Length; j++)
|
|
{
|
|
if (columns[j].Caption == currentCaption)
|
|
mergeCount++;
|
|
else
|
|
break;
|
|
}
|
|
|
|
// 如果需要合并
|
|
if (mergeCount > 1)
|
|
{
|
|
// 计算合并区域的宽度
|
|
int mergedWidth = 0;
|
|
for (int k = i; k < i + mergeCount; k++)
|
|
{
|
|
mergedWidth += columns[k].Width;
|
|
}
|
|
|
|
// 获取当前列的绘制区域
|
|
Rectangle mergedBounds = new Rectangle(
|
|
GetColumnXPosition(columns[i]),
|
|
e.Bounds.Y,
|
|
mergedWidth,
|
|
e.Bounds.Height
|
|
);
|
|
|
|
// 绘制合并后的表头
|
|
e.Graphics.FillRectangle(Brushes.LightGray, mergedBounds);
|
|
e.Graphics.DrawString(currentCaption, e.Appearance.Font, Brushes.Black, mergedBounds.X + 5, mergedBounds.Y + 5);
|
|
|
|
// 跳过已合并的列
|
|
i += mergeCount - 1;
|
|
}
|
|
else
|
|
{
|
|
// 不需要合并,正常绘制
|
|
e.Graphics.FillRectangle(Brushes.LightGray, e.Bounds);
|
|
e.Graphics.DrawString(currentCaption, e.Appearance.Font, Brushes.Black, e.Bounds.X + 5, e.Bounds.Y + 5);
|
|
}
|
|
|
|
// 阻止默认绘制
|
|
e.Handled = true;
|
|
}
|
|
|
|
|
|
//// 设置多表头
|
|
//if (e.Column != null)
|
|
//{
|
|
// // 绘制主表头
|
|
// e.Graphics.FillRectangle(Brushes.LightGray, e.Bounds);
|
|
// e.Graphics.DrawString("Main Header", e.Appearance.Font, Brushes.Black, e.Bounds.X + 5, e.Bounds.Y + 5);
|
|
|
|
// // 绘制子表头
|
|
// Rectangle subHeaderBounds = new Rectangle(e.Bounds.X, e.Bounds.Y + e.Bounds.Height / 2, e.Bounds.Width, e.Bounds.Height / 2);
|
|
// e.Graphics.FillRectangle(Brushes.LightBlue, subHeaderBounds);
|
|
// e.Graphics.DrawString(e.Column.Caption, e.Appearance.Font, Brushes.Black, subHeaderBounds.X + 5, subHeaderBounds.Y + 5);
|
|
|
|
// // 阻止默认绘制
|
|
// e.Handled = true;
|
|
//}
|
|
}
|
|
|
|
|
|
private int GetColumnXPosition(TreeListColumn column)
|
|
{
|
|
//// 获取 TreeList 的视图信息
|
|
//TreeListViewInfo viewInfo = treeList1.ViewInfo;
|
|
|
|
//// 遍历列的可视信息
|
|
//foreach (ColumnInfo columnInfo in viewInfo.ColumnsInfo)
|
|
//{
|
|
// if (columnInfo.Column == column)
|
|
// {
|
|
// // 返回列的 X 轴位置
|
|
// return columnInfo.Bounds.X;
|
|
// }
|
|
//}
|
|
|
|
// 如果未找到列,返回 -1
|
|
return -1;
|
|
}
|
|
|
|
private void button1_Click(object sender, EventArgs e)
|
|
{
|
|
//treeList1.ToExcelTreeList("单表");
|
|
treeList1.ToTreeExcel("单据");
|
|
}
|
|
}
|
|
}
|