c# dev GridControl多选当前行显示样式问题

由于Dev GridControl在支持多选的时候,如果如果焦点行单独加了样式,Appearance-->FocusedRow  &  HideSelectionRow

这个时候,鼠标焦点转移到其他控件时候,由于GridControl失去了焦点,故GridControl当前行(焦点行)上的样式就丢失了。

Dev是一套很成熟的商用控件,当然,解决方案还是有的,如下:

设置EnableAppearanceFocusedCell = False, EnableAppearanceFocusedRow = False为false,然后自定义RowStyle事件,具体设置如下:

OptionsSelection --> CheckBoxSelectorColumnWidth = 28, MultiSelectMode = CheckBoxRowSelect, EnableAppearanceFocusedCell = False, EnableAppearanceFocusedRow = False, MultiSelect = True

FocusRectStyle --> RowFullFocus

private void gridView1_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)
{
    if (e.RowHandle == this.gridView1.FocusedRowHandle)
        e.Appearance.BackColor = Color.LightGreen;
}

 

转载于:https://www.cnblogs.com/lcawen/p/9150053.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DevExpress的GridControl,可以通过以下步骤实现多选后右键弹出小菜单: 1. 在GridControl的设计器,找到PopupMenu属性,点击其右边的省略号(...)按钮,打开PopupMenu编辑器。 2. 在PopupMenu编辑器,点击Add按钮,添加一个新的PopupMenu。 3. 在新的PopupMenu添加一个菜单项(比如"删除"),并设置Click事件处理方法。在该方法,可以编写删除选或单元格的代码。 4. 在GridControl的事件MouseDown,判断鼠标右键是否按下,如果是,则弹出PopupMenu。在该事件,可以使用GridControl的GetSelectedRows方法获取选的索引,从而实现对选或单元格的操作。 以下是示例代码: ``` // 定义PopupMenu和菜单项 private DevExpress.XtraBars.PopupMenu popupMenu1; private DevExpress.XtraBars.BarButtonItem barButtonItem1; // 初始化PopupMenu和菜单项 private void InitPopupMenu() { // 创建PopupMenu popupMenu1 = new DevExpress.XtraBars.PopupMenu(); // 创建菜单项 barButtonItem1 = new DevExpress.XtraBars.BarButtonItem(); barButtonItem1.Caption = "删除"; barButtonItem1.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(barButtonItem1_ItemClick); // 将菜单项添加到PopupMenu popupMenu1.AddItem(barButtonItem1); } // 处理菜单项的Click事件 private void barButtonItem1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { int[] selectedRows = gridView1.GetSelectedRows(); if (selectedRows.Length > 0) { gridView1.DeleteSelectedRows(); } } // 在GridControl的MouseDown事件显示PopupMenu private void gridControl1_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { int[] selectedRows = gridView1.GetSelectedRows(); if (selectedRows.Length > 0) { popupMenu1.ShowPopup(gridControl1.PointToScreen(e.Location)); } } } ``` 在以上示例代码,我们首先定义了一个PopupMenu和一个菜单项,并在InitPopupMenu方法初始化它们。在barButtonItem1_ItemClick方法处理菜单项的Click事件,实现对选或单元格的删除操作。在gridControl1_MouseDown方法判断鼠标右键是否按下,并使用GetSelectedRows方法获取选的索引,如果选不为空,则显示PopupMenu。用户右键单击GridControl后,就可以看到一个删除菜单,点击该菜单后,选或单元格将被删除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值