话不多说直接上代码:
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中设置就可以了。