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