c# Winform GridControl 给列自动生成快捷操作按钮

摘要:
设置为true后,双击触发。如果数据"不可编辑",在"列"的OptionsColumn的AllowEdit中设置就可以了。

话不多说直接上代码:

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);
        }
    }
}

窗体代码如下:

usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;

namespaceWindowsFormsApplication1
{
    public partial classGridControlAddShortcutButtonForm : Form
    {
        publicGridControlAddShortcutButtonForm()
        {
            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 classTestDemo
    {
        public string Id { get; set; }
    }
}

效果图如下:

c# Winform GridControl 给列自动生成快捷操作按钮第1张

界面添加方法如下:

gridcontrol中添加按钮的步骤:

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

2. 把TextEditStyle属性设置为HideTextEditor;

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

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

添加事件:

c# Winform GridControl 给列自动生成快捷操作按钮第2张

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

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

设置为true后,双击触发。

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

免责声明:文章转载自《c# Winform GridControl 给列自动生成快捷操作按钮》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C#接口(interface)与类(class)的实例互相转换深度解析Web_0006:阿里云服务器OSS缓存设置清理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Kubelet 证书如何自动续期

一、问题现象和原因 Kubernetes 日志错误 当 Kubernetes 集群日志中出现certificate has expired or is not yet valid错误信息时,表明证书过期 证书过期原因 服务器时间不对,导致证书过期 确实证书过期了 证书过期,很多同学会很疑惑,我证书明明签署10年有效期或者更久,怎么刚1年就过期了,下面就...

winform窗体 【打开多个窗体、窗体之间传值、打开唯一窗体】

1、打开多个窗体 2、窗体之间的传值 3打开唯一窗体 Form1中btn1按钮点击show出Form2,当Form2处于开启状态时,再次点击btn1不会继续弹出窗体,而是将焦点定位至已开启的Form2上;当Form2关闭后,再次点击btn1则会show出一个新的Form2; Form1: //创建一个全局集合,用来放置已经show出的窗体对象 L...

winForm 打印预览

  自己很少写技术博客,虽然已经干程序员两年多了,winform开发,web开发都干过,不论项目大小对于.net的相关技术也是了解的,如mvc,wcf,wpf,silverlight,socekt通讯,nhibernate,spring.net wp手机开发等,但是最终发现还是软件架构比所谓的单一功能更为系统化。  下面是一个小的例子 Winfom打印预览...

C# WinForm窗体界面设置问题

设置方法:  一:Form对象  属性:  设计中的Name:窗体类的类名AcceptButton:窗口的确定按钮CancelButton:窗口按ESC的取消按钮  1.外观  Backcolor:背景颜色Forecolor:字体颜色backgroundImage:背景图片Font:设置字体Formborderstyle:边框样式,常用Fixedsingl...

利用C#的反射机制动态调用DLL类库

最近由于业务要求,需要动态调用DLL类库,所以研究了一下,感觉还好也不太难,今天就把自己理解的写了一个小例子(已经通过VS2005跑通),供大家一起研究和探讨,有理解不当的地方还请高手们多多指正,谢谢啦! 好,在这之前我先把反射所需要使用的几个类给大家列一下: 1、使用Assembly类定义和加载程序集,加载在程序集清单中列出模块,以及从此程序集中查找类型...

C# 串口 已关闭 Safe handle

今天在使用我的通信框架,创建基于串口通信的客户端时,出现这样一个BUG: [csharp]view plaincopy 未处理System.ObjectDisposedException Message=已关闭Safehandle Source=mscorlib ObjectName="" StackTrace: 在System.Runtime....