禁用特定列的条件格式

时间:2016-12-27 12:37:32

标签: devexpress conditional-formatting xtragrid

通过启用WinForms Data Grid v14.2属性从GridOptionsMenu.ShowConditionalFormattingItem开始,Conditional Formatting功能可用。

通过右键单击任何列标题,将显示条件格式菜单项,允许最终用户将条件格式应用于网格列。

enter image description here

我的问题是,是否可以禁用特定列的功能?我正在考虑让菜单项变灰,或者根本没有(通过以某种方式隐藏它)在项目列表中。

我知道通过将格式应用于整个行,可以通过放在其他列上的条件格式来格式化特定列的单元格。但是,我的目标只是确保用户无法访问特定列的功能。

1 个答案:

答案 0 :(得分:0)

您可以使用GridView.PopupMenuShowing事件删除相应的菜单项:

using System.Windows.Forms;
using DevExpress.XtraGrid.Localization;
using DevExpress.XtraGrid.Menu;
using DevExpress.XtraGrid.Views.Grid;

namespace WindowsFormsApplication2 {
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
            gridView1.PopupMenuShowing += gridView1_PopupMenuShowing;
        }
        void gridView1_PopupMenuShowing(object sender, PopupMenuShowingEventArgs e) {
            var columnMenu = e.Menu as GridViewColumnMenu;
            if(columnMenu != null && columnMenu.Column == this.gridColumn1) {
                var conditionalFormattingItem = e.Menu.Items.FirstOrDefault(x => object.Equals(x.Tag, GridStringId.MenuColumnConditionalFormatting));
                if(conditionalFormattingItem != null)
                    conditionalFormattingItem.Visible = false;
            }
        }
    }
}