• 自定义布局模板


     1 namespace RwxFramework.Ribbon
     2 {
     3     [Designer(typeof(LayoutBuilder), typeof(IDesigner))]
     4     public partial class Layout : Component
     5     {
     6         public Layout()
     7         {
     8             InitializeComponent();
     9         }
    10 
    11         public Layout(IContainer container)
    12         {
    13             container.Add(this);
    14 
    15             InitializeComponent();
    16         }
    17     }
    18 }
    View Code
     1 namespace RwxFramework.Ribbon
     2 {
     3     public partial class LayoutBuilder : ComponentDesigner
     4     {
     5         public LayoutBuilder()
     6         {
     7             InitializeComponent();
     8             DesignerVerb verb = new DesignerVerb("布局模板", new EventHandler(BuildClick));
     9             this.Verbs.Add(verb);
    10         }
    11         public void BuildClick(object sender, EventArgs e)
    12         {
    13             DoDefaultAction();
    14         }
    15         public override void DoDefaultAction()
    16         {
    17             IDesignerHost designerHost = (IDesignerHost)base.Component.Site.GetService(typeof(IDesignerHost));
    18             DesignerTransaction designerTransaction = designerHost.CreateTransaction();
    19             IComponentChangeService componentChangeService = (IComponentChangeService)this.GetService(typeof(IComponentChangeService));
    20             Form component = (Form)designerHost.RootComponent;
    21             LayoutBuilderUI layoutBuilderUI = new LayoutBuilderUI(designerHost);
    22             layoutBuilderUI.ShowDialog();
    23             componentChangeService.OnComponentChanging(component, null);
    24             componentChangeService.OnComponentChanged(component, null, null, null); ;
    25             designerTransaction.Commit();
    26         }
    27 
    28         public LayoutBuilder(IContainer container)
    29         {
    30             if (container != null)
    31             {
    32                 container.Add((IComponent)this);
    33             }
    34         }
    35     }
    36 }
    View Code
      1 namespace RwxFramework.Ribbon
      2 {
      3     public partial class LayoutBuilderUI : Form
      4     {
      5         public IDesignerHost iDesignerHost;
      6         public List<Sys_Layout> sys_Layouts;
      7         public LayoutBuilderUI()
      8         {
      9             InitializeComponent();
     10         }
     11         public LayoutBuilderUI(IDesignerHost host)
     12         {
     13             sys_Layouts = new List<Sys_Layout>();
     14             InitializeComponent();
     15             iDesignerHost = host;
     16         }
     17         private void AddPanel(string Layout_Name, string Layout_Nick,
     18            string Layout_Grid, LayoutType Layout_Type, LayoutDock Layout_Dock)
     19         {
     20             Sys_Layout sys_Layout = new Sys_Layout();
     21             sys_Layout.Layout_Name = Layout_Name;
     22             sys_Layout.Layout_Nick = Layout_Nick;
     23             sys_Layout.Layout_Grid = Layout_Grid;
     24             sys_Layout.Layout_Type = Layout_Type;
     25             sys_Layout.Layout_Dock = Layout_Dock;
     26             sys_Layout.Layout_Sort = sys_Layouts.Count;
     27             sys_Layouts.Add(sys_Layout);
     28         }
     29         private void InitializeLayout(List<Sys_Layout> sys_Layouts, Control parentControl)
     30         {
     31             // MessageBox.Show((sys_Layouts.Count).ToString());
     32             Control control = new Control();
     33             int i = 0;
     34             foreach (Sys_Layout current in sys_Layouts.OrderBy(x => x.Layout_Sort))
     35             {
     36                 if (current.Layout_Dock != LayoutDock.fill)
     37                 {
     38                     i++;
     39                     SplitterControl splitterControl = (SplitterControl)
     40                         iDesignerHost.CreateComponent(typeof(SplitterControl));
     41                     splitterControl.Dock = (DockStyle)current.Layout_Dock;
     42                     parentControl.Controls.Add(splitterControl);
     43                     //MessageBox.Show(i.ToString());
     44                 }
     45                 GroupControl groupControl = null;
     46                 LayoutType layout_Type = current.Layout_Type;
     47                 if (layout_Type != LayoutType.qry)
     48                 {
     49                     groupControl = (GroupControl)this.iDesignerHost.CreateComponent(typeof(GroupControl), current.Layout_Name);
     50                     if (layout_Type == LayoutType.gc)
     51                     {
     52                         RwxChildGridPager rwxGrid = (RwxChildGridPager)this.iDesignerHost.CreateComponent(typeof(RwxChildGridPager), current.Layout_Grid);
     53                         rwxGrid.Dock = DockStyle.Fill;
     54                         rwxGrid.Name = current.Layout_Grid;
     55                         //GridControl gridControl = (GridControl)this.iDesignerHost.CreateComponent(typeof(GridControl), current.Layout_Grid);
     56                         //gridControl.Dock = DockStyle.Fill;
     57                         //gridControl.Name = current.Layout_Grid;
     58                         //GridView gridView = (GridView)gridControl.CreateView("GridView");
     59                         //gridView.OptionsView.ColumnAutoWidth = false;
     60                         //gridView.Name = gridControl.Name.Replace("Control", "View");
     61                         //gridView.OptionsView.ShowGroupPanel = false;
     62                         //gridView.OptionsView.ShowFooter = true;
     63                         //gridView.OptionsSelection.MultiSelect = true;
     64                         //gridControl.MainView = gridView;
     65                         groupControl.Controls.Add(rwxGrid);
     66                     }
     67                 }
     68                 else
     69                 {
     70                     groupControl = (GroupControl)this.iDesignerHost.CreateComponent(typeof(GroupControl), current.Layout_Name);
     71                 }
     72                 if (groupControl == null)
     73                 {
     74                     return;
     75                 }
     76                 groupControl.Dock = (DockStyle)current.Layout_Dock;
     77                 groupControl.Top = 80;
     78                 groupControl.Left = 80;
     79                 groupControl.Width = 80;
     80                 groupControl.Height = 80;
     81                 groupControl.Name = current.Layout_Name;
     82                 groupControl.Text = current.Layout_Nick;
     83                 if (((DockStyle)current.Layout_Dock).Equals(DockStyle.Fill))
     84                 {
     85                     control = groupControl;
     86                 }
     87                 parentControl.Controls.Add(groupControl);
     88             }
     89             control.Dock = DockStyle.Fill;
     90             control.BringToFront();
     91             this.sys_Layouts.Clear();
     92             this.Close();
     93         }
     94         /// <summary>
     95         /// 上下模板
     96         /// </summary>
     97         /// <param name="sender"></param>
     98         /// <param name="e"></param>
     99         private void btn_tb_Click(object sender, EventArgs e)
    100         {
    101             this.AddPanel("gpqry", "查询", "", LayoutType.qry, LayoutDock.top);
    102             this.AddPanel("gpc", "信息", "gc", LayoutType.gc, LayoutDock.fill);
    103             this.InitializeLayout(this.sys_Layouts, (Control)this.iDesignerHost.RootComponent);
    104         }
    105         /// <summary>
    106         /// 上-左右
    107         /// </summary>
    108         /// <param name="sender"></param>
    109         /// <param name="e"></param>
    110         private void btn_tlr_Click(object sender, EventArgs e)
    111         {
    112             this.AddPanel("gpcl", "信息", "gcl", LayoutType.gc, LayoutDock.left);
    113             this.AddPanel("gpqry", "查询", "", 0, LayoutDock.top);
    114             this.AddPanel("gpcr", "信息", "gcr", LayoutType.gc, LayoutDock.fill);
    115             this.InitializeLayout(this.sys_Layouts, (Control)this.iDesignerHost.RootComponent);
    116         }
    117         /// <summary>
    118         /// 上中下
    119         /// </summary>
    120         /// <param name="sender"></param>
    121         /// <param name="e"></param>
    122         private void btn_tmb_Click(object sender, EventArgs e)
    123         {
    124             this.AddPanel("gpqry", "查询", "", LayoutType.qry, LayoutDock.top);
    125             this.AddPanel("gpch", "信息", "gcb", LayoutType.gc, LayoutDock.buttom);
    126             this.AddPanel("gpcb", "信息", "gch", LayoutType.gc, LayoutDock.fill);
    127             this.InitializeLayout(this.sys_Layouts, (Control)this.iDesignerHost.RootComponent);
    128         }
    129         /// <summary>
    130         /// 上左右上下
    131         /// </summary>
    132         /// <param name="sender"></param>
    133         /// <param name="e"></param>
    134         private void btn_tlrtb_Click(object sender, EventArgs e)
    135         {
    136             this.AddPanel("gpcr", "信息", "gcb", LayoutType.gc, LayoutDock.buttom);
    137             this.AddPanel("gpcl", "信息", "gcl", LayoutType.gc, LayoutDock.left);
    138             this.AddPanel("gpqry", "查询", "", LayoutType.qry, LayoutDock.top);
    139             this.AddPanel("gpc", "信息", "gch", LayoutType.gc, LayoutDock.fill);
    140             this.InitializeLayout(this.sys_Layouts, (Control)this.iDesignerHost.RootComponent);
    141         }
    142         /// <summary>
    143         /// 上左中右
    144         /// </summary>
    145         /// <param name="sender"></param>
    146         /// <param name="e"></param>
    147         private void btn_tlcr_Click(object sender, EventArgs e)
    148         {
    149             this.AddPanel("gpcr", "信息", "gcr", LayoutType.gc, LayoutDock.right);
    150             this.AddPanel("gpcl", "信息", "gcl", LayoutType.gc, LayoutDock.left);
    151             this.AddPanel("gpqry", "查询", "", LayoutType.qry, LayoutDock.top);
    152             this.AddPanel("gpc", "信息", "gc", LayoutType.gc, LayoutDock.fill);
    153             this.InitializeLayout(this.sys_Layouts, (Control)this.iDesignerHost.RootComponent);
    154         }
    155         /// <summary>
    156         /// 上中左右下
    157         /// </summary>
    158         /// <param name="sender"></param>
    159         /// <param name="e"></param>
    160         private void btn_tmlrb_Click(object sender, EventArgs e)
    161         {
    162             this.AddPanel("gpcr", "信息", "gcr", LayoutType.gc, LayoutDock.right);
    163             this.AddPanel("gpcb", "信息", "gcb", LayoutType.gc, LayoutDock.buttom);
    164             this.AddPanel("gpqry", "查询", "", LayoutType.qry, LayoutDock.top);
    165             this.AddPanel("gpcl", "信息", "gcl", LayoutType.gc, LayoutDock.fill);
    166             this.InitializeLayout(this.sys_Layouts, (Control)this.iDesignerHost.RootComponent);
    167         }
    168 
    169     }
    170 }
    171 public enum LayoutType
    172 {
    173     [Description("查询")]
    174     qry = 0,
    175     [Description("列表")]
    176     gc = 1
    177 }
    178 public enum LayoutDock
    179 {
    180     top = 1,
    181     buttom = 2,
    182     left = 3,
    183     right = 4,
    184     fill = 5
    185 }
    186 public class Sys_Layout
    187 {
    188     public Guid Layout_Id { get; set; }
    189     public Guid Layout_Page { get; set; }
    190     public string Layout_Name { get; set; }
    191     public string Layout_Nick { get; set; }
    192     public int Layout_Sort { get; set; }
    193     public LayoutType Layout_Type { get; set; }
    194     public string Layout_Grid { get; set; }
    195     public int Layout_Left { get; set; }
    196     public int Layout_Top { get; set; }
    197     public int Layout_Width { get; set; }
    198     public int Layout_Height { get; set; }
    199     public LayoutDock Layout_Dock { get; set; }
    200     public string Remark { get; set; }
    201 }
    View Code
  • 相关阅读:
    zabbix监控日志文件
    memached实现tomcat的session共享
    Ansible基础配置与常用模块使用
    ELK之topbeat部署
    ELK之nginx日志分析图表创建
    ELK安装配置及nginx日志分析
    awk将普通文本转换成json文件
    日常工作中使用的一些Mongodb语句
    zabbix监控zookeeper
    zabbix监控mysql
  • 原文地址:https://www.cnblogs.com/bjrwx/p/9444004.html
Copyright © 2020-2023  润新知