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中设置就可以了。

猜你喜欢

转载自www.cnblogs.com/aaaaq/p/10802049.html