public ExplorerPropertyView() { InitializeComponent(); this.TabText = Language.Current.PropertyGridView; PropertyGridValidator validator = new PropertyGridValidator(typeof(EntityBase)) { ActOnSub = true, }; validator.Validator = (e) => { bool success = true; string message = null; if (e.Property == EntityBase.Property_Code) { Debug.Assert(e.Objects.Length == 1, "验证 Code 时对象数目只能是一个"); object obj = e.Objects[0]; string value = e.Value.ToString(); Type objType = obj.GetType(); if (objType.Equals(typeof(DataEntity)) || ReflectionHelper.IsSubOf(objType, typeof(DataEntity))) { if (_dataEntityArchive.EntityExist(value)) { success = false; message = Language.Current.PropertyGridView_MessageDataEntityCodeExist; } } else if (objType.Equals(typeof(DataItemEntity)) || ReflectionHelper.IsSubOf(objType, typeof(DataItemEntity))) { DataItemEntity itemEntity = (DataItemEntity)obj; if (_dataEntityArchive.ItemEntityExist(itemEntity.Owner.Id, value)) { success = false; message = Language.Current.PropertyGridView_MessageDataItemEntityCodeExist; } } else { Debug.Assert(false, "未处理的类型"); } } return(new PropertyGridValidateResult(success, message)); }; propertyGrid.AddValidator(validator); propertyGrid.PropertyChanged += new PropertyGridPad.OnPropertyChangeHandler(propertyGrid_PropertyChanged); }
public ExplorerPropertyView() { InitializeComponent(); this.TabText = Language.Current.Explorer_PropertyView_TabText; PropertyGridValidator validator = new PropertyGridValidator(typeof(WindowEntity)) { ActOnSub = true, }; validator.Validator = (e) => { bool success = true; string message = null; if (e.Property == EntityBase.Property_Code) { if (Keywords.Container(e.Value.ToString())) { success = false; message = CommonLanguage.Current.ValueInefficacyUseKeywords; } else { Debug.Assert(e.Objects.Length == 1, "验证 Code 时对象数目只能是一个"); object obj = e.Objects[0]; string value = e.Value.ToString(); if (_windowArchive.CheckExistByCode(value)) { success = false; message = Language.Current.Explorer_PropertyView_MessageCodeExist; } } } return(new PropertyGridValidateResult(success, message)); }; propertyGrid.AddValidator(validator); propertyGrid.PropertyChanged += new PropertyGridPad.OnPropertyChangeHandler(propertyGrid_PropertyChanged); }
public FormPropertyGrid(FormHostingContainer container) { InitializeComponent(); _container = container; _container.ActiveHostingChanged += new FormHostingContainer.OnActiveHostingChangedHandler(_container_ActiveHostingChanged); _container.HostingSelectionChanged += new FormHostingContainer.OnHostingSelectionChangedHandler(_container_HostingSelectionChanged); _container.HostingInitFormElementsComponentComplete += new FormHostingContainer.OnHostingInitFormElementsComponentCompleteHandler(_container_HostingInitFormElementsComponentComplete); #region PropertyGridValidator PropertyGridValidator validator = new PropertyGridValidator(typeof(EntityBase)) { ActOnSub = true, }; validator.Validator = (e) => { bool success = true; string message = null; //因为C#是区分大小写的,所以这里不转为全小写或全大写,避免Code和CODE两个不同Property //理论上我不会这么做 if (e.Property == EntityBase.Property_Code) { //判断是否使用了系统保留字 if (Keywords.Container(e.Value.ToString())) { success = false; message = CommonLanguage.Current.ValueInefficacyUseKeywords; } else { Debug.Assert(e.Objects.Length == 1, "验证 Code 时对象数目只能是一个"); object obj = e.Objects[0]; string value = e.Value.ToString(); //判断在此窗体范围内,代码是否已被占用 if (FormHostingContainer.Instance.ActiveFormEntity.ValidateCode(value) == false) { success = false; message = Language.Current.FormDesigner_FormPropertyGrid_MessageFormElementCodeExist; } else { //如果当前选择的目标对象是一个窗体,则还需判断指定的代码是否与其它窗体的代码冲突 //此处不用考虑多选的情况,因为多选状态下,代码属性不显示 WindowEntity windowEntity = e.Objects[0] as WindowEntity; if (windowEntity != null) { //判断code是否已被占用 if (_windowComponentService.CheckExistByCode(value)) { success = false; message = Language.Current.FormDesigner_FormPropertyGrid_MessageFormEntityExist; } } } } } return(new PropertyGridValidateResult(success, message)); }; propertyGrid.AddValidator(validator); #endregion //注意,ComboBox里绑定的对象是实际控件,不是Entity this.comboBoxFormElementList.DrawMode = DrawMode.OwnerDrawFixed; this.comboBoxFormElementList.Sorted = false; this.comboBoxFormElementList.DrawItem += new DrawItemEventHandler(ComboBoxDrawItem); this.comboBoxFormElementList.MeasureItem += new MeasureItemEventHandler(ComboBoxMeasureItem); this.comboBoxFormElementList.SelectedIndexChanged += new EventHandler(ComboBoxSelectedIndexChanged); this.VisibleChanged += new EventHandler(FormPropertyGrid_VisibleChanged); this.Icon = DrawingTool.ImageToIcon(IconsLibrary.Property); this.TabText = Language.Current.FormPropertyGrid_TabText; }
public ExplorerPropertyView() { InitializeComponent(); this.TabText = Language.Current.Explorer_PropertyView_TabText; PropertyGridTypeWrapper toolStripPageEntityWrapper = new PropertyGridTypeWrapper(typeof(ToolStripPageEntity)) { ActOnSubClass = true, VisibleAll = true, }; toolStripPageEntityWrapper.VisibleException.Add(EntityBase.Property_Remark); propertyGrid.AddTypeWrapper(toolStripPageEntityWrapper); PropertyGridTypeWrapper toolStripGroupEntityWrapper = new PropertyGridTypeWrapper(typeof(ToolStripGroupEntity)) { ActOnSubClass = true, VisibleAll = true }; toolStripGroupEntityWrapper.VisibleException.Add(EntityBase.Property_Remark); propertyGrid.AddTypeWrapper(toolStripGroupEntityWrapper); PropertyGridValidator toolStripItemValidator = new PropertyGridValidator(typeof(EntityBase)) { ActOnSub = true, }; toolStripItemValidator.Validator = (e) => { bool success = true; string message = null; if (e.Property == EntityBase.Property_Code) { if (Keywords.Container(e.Value.ToString())) { success = false; message = CommonLanguage.Current.ValueInefficacyUseKeywords; } else { Debug.Assert(e.Objects.Length == 1, "验证 Code 时对象数目只能是一个"); object obj = e.Objects[0]; #if DEBUG Type objType = obj.GetType(); if (ReflectionHelper.IsSubOf(objType, typeof(ToolStripItemAbstract)) == false && ReflectionHelper.IsSubOf(objType, typeof(ToolStripPageEntity)) == false && ReflectionHelper.IsSubOf(objType, typeof(ToolStripGroupEntity)) == false && ReflectionHelper.IsSubOf(objType, typeof(MenuEntity)) == false) { Debug.Assert(false, "obj 不是有效的用于菜单或工具栏的对象类型"); } #endif string value = e.Value.ToString(); if (_toolStripArchive.CheckExistByCode(value) || _toolStripArchive.PageExistByCode(value) || _toolStripArchive.GroupExistByCode(value) || _menuStripArchive.CheckExistByCode(value)) { success = false; message = Language.Current.Explorer_PropertyView_MessageCodeExist; } } } return(new PropertyGridValidateResult(success, message)); }; propertyGrid.AddValidator(toolStripItemValidator); propertyGrid.PropertyChanged += new PropertyGridPad.OnPropertyChangeHandler(propertyGrid_PropertyChanged); }