zoukankan      html  css  js  c++  java
  • c# Winform GridControl 给列自动生成快捷操作按钮

    话不多说直接上代码:

    using DevExpress.XtraEditors.Controls;
    using DevExpress.XtraEditors.Repository;
    using DevExpress.XtraGrid;
    using DevExpress.XtraGrid.Columns;
    using DevExpress.XtraGrid.Views.Grid;
    using System;
    using System.Collections.Generic;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
        public class AddShortcutButton
        {
            public static void Add(Control ctl, GridControl gctl, GridView gv)
            {
                RepositoryItemButtonEdit btnEdit = new RepositoryItemButtonEdit();
                BeginInit(ctl, gctl, gv, btnEdit, true);
    
                btnEdit.Name = "ribtnOperationButton";
                btnEdit.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.HideTextEditor;
                btnEdit.ButtonClick += new DevExpress.XtraEditors.Controls.ButtonPressedEventHandler(btn_ButtonClick);
    
                GenerateButton(btnEdit, "病历查阅");
                GenerateButton(btnEdit, "护理病历");
                GenerateButton(btnEdit, "临床数据");
    
                GridColumn column = new GridColumn();
                column.Caption = "快捷操作";
                column.Visible = true;
                column.ColumnEdit = btnEdit;
                gv.Columns.Add(column);
                gctl.RepositoryItems.Add(btnEdit);
    
                BeginInit(ctl, gctl, gv, btnEdit, false);
            }
            static void GenerateButton(RepositoryItemButtonEdit btnEdit, string captionName)
            {
                EditorButton btn = new EditorButton();
                btn.Kind = ButtonPredefines.Glyph;
                btn.Caption = captionName;
                btn.Tag = btn.Caption;
                btn.ToolTip = btn.Caption;
                btn.Appearance.ForeColor = Color.Blue;
                btnEdit.Buttons.Add(btn);
            }
            static void BeginInit(Control ctl, GridControl gctl, GridView gv, RepositoryItemButtonEdit btnEdit, bool IsBeg)
            {
                if (IsBeg)
                {
                    ((System.ComponentModel.ISupportInitialize)(gctl)).BeginInit();
                    ((System.ComponentModel.ISupportInitialize)(gv)).BeginInit();
                    ((System.ComponentModel.ISupportInitialize)(btnEdit)).BeginInit();
                    ctl.SuspendLayout();
                }
                else
                {
                    ((System.ComponentModel.ISupportInitialize)(gctl)).EndInit();
                    ((System.ComponentModel.ISupportInitialize)(gv)).EndInit();
                    ((System.ComponentModel.ISupportInitialize)(btnEdit)).EndInit();
                    ctl.ResumeLayout(false);
                }
            }
            private static void btn_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
            {
                MessageBox.Show(e.Button.Caption);
                // OpenOperationButton(e.Button.Caption);
            }
        }
    }
    

    窗体代码如下:

    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;
    
    namespace WindowsFormsApplication1
    {
        public partial class GridControlAddShortcutButtonForm : Form
        {
            public GridControlAddShortcutButtonForm()
            {
                InitializeComponent();
                List<TestDemo> list = new List<TestDemo>();
                for (int i = 0; i < 100; i++)
                {
                    list.Add(new TestDemo() { Id = Guid.NewGuid().ToString("N") });
                }
                gridControl1.DataSource = list;
                gridControl2.DataSource = list;
                AddShortcutButton.Add(this, gridControl1, gridView1);
                AddShortcutButton.Add(this, gridControl2, gridView2);
            }
    
        }
        public class TestDemo
        {
            public string Id { get; set; }
        }
    }

    效果图如下:

    界面添加方法如下:

    gridcontrol中添加按钮的步骤:

    1. 把列的ColumnEdit属性设置为RepositoryItemButtonEdit 

    2. 把TextEditStyle属性设置为HideTextEditor;

    3. 把Buttons的Kind属性设置为Glyph; 

    4. 把Buttons的HorzAlignment属性设置为Center; 

    添加事件:

    有时可能遇到增加的单击事件,不能触发。

    原因:设置了GridControl了Editable为false!

    设置为true后,双击触发。

    如果数据"不可编辑",在"列"的OptionsColumn的AllowEdit中设置就可以了。

  • 相关阅读:
    动态联编学习:一、多态性和动态联编
    客户信用评分参考
    top、postop、scrolltop、scrollHeight、offsetHeight
    XPath 简单语法
    系统表
    彩信MO,MT的业务流程
    Short Message Peer to Peer
    解决IIS中网站按浏览没反应问题
    比较详细的win2003 IIS6.0 301重定向带参数的问题解决方法
    Fleaphp函数用法举例
  • 原文地址:https://www.cnblogs.com/aaaaq/p/10802049.html
Copyright © 2011-2022 走看看