Unity 框架

TableColumnHeader.cs 2.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /****************************************************
  2. 文件:TableColumnHeader.cs
  3. 作者:陶长春
  4. 邮箱:376248129@qq.com
  5. 日期:2024年12月12日 8:16:50
  6. UnityVersion: 2021.3.13f1
  7. 功能:绘制表头样式
  8. *****************************************************/
  9. using System.Collections;
  10. using UnityEngine;
  11. using System.Collections.Generic;
  12. using UnityEditor.IMGUI.Controls;
  13. using UnityEditor;
  14. namespace TFramework
  15. {
  16. /// <summary>
  17. /// 表格表头(列标题)
  18. /// </summary>
  19. public class TableColumnHeader<T> : MultiColumnHeader where T : class, new()
  20. {
  21. /// <summary>
  22. /// 绘制单个列标题方法
  23. /// </summary>
  24. public TAction<Rect, TableColumn<T>, int> DrawHeaderMethod;
  25. public TableColumnHeader(MultiColumnHeaderState state) : base(state)
  26. {
  27. }
  28. /// <summary>
  29. /// 单击列标题时展开的上下文菜单
  30. /// </summary>
  31. /// <param name="menu">上下文菜单</param>
  32. protected override void AddColumnHeaderContextMenuItems(GenericMenu menu)
  33. {
  34. base.AddColumnHeaderContextMenuItems(menu);
  35. }
  36. /// <summary>
  37. /// 单击列标题时
  38. /// </summary>
  39. /// <param name="column">列标题数据</param>
  40. /// <param name="columnIndex">列标题索引</param>
  41. protected override void ColumnHeaderClicked(MultiColumnHeaderState.Column column, int columnIndex)
  42. {
  43. base.ColumnHeaderClicked(column, columnIndex);
  44. }
  45. /// <summary>
  46. /// 定义单个列标题GUI
  47. /// </summary>
  48. /// <param name="column">列标题数据</param>
  49. /// <param name="headerRect">列标题矩形</param>
  50. /// <param name="columnIndex">列标题索引</param>
  51. protected override void ColumnHeaderGUI(MultiColumnHeaderState.Column column, Rect headerRect, int columnIndex)
  52. {
  53. TableColumn<T> tableColumn = column as TableColumn<T>;
  54. if (DrawHeaderMethod != null)
  55. {
  56. DrawHeaderMethod.Invoke(headerRect, tableColumn, columnIndex);
  57. }
  58. else
  59. base.ColumnHeaderGUI(column, headerRect, columnIndex);
  60. }
  61. }
  62. }