using DevExpress.XtraEditors.Controls; using System.Collections.Generic; using System.Windows.Forms; using Yw.Untity; namespace HStation.WinFrmUI { /// /// 选择Flags控件 /// public partial class SelectFlagsCtrl : DevExpress.XtraEditors.XtraUserControl { public SelectFlagsCtrl() { InitializeComponent(); } //绑定数据 public void SetBindingData(List sysFlags = null, List cekFlags = null) { this.clbFlags.Items.Clear(); if (sysFlags != null) { this.clbFlags.Items.AddRange(sysFlags.ToArray()); } if (cekFlags != null) { foreach (CheckedListBoxItem item in this.clbFlags.Items) item.CheckState = (cekFlags.IndexOf(item.Value.ToString()) > -1) ? CheckState.Checked : CheckState.Unchecked; List customFlags = null; if (sysFlags != null) customFlags = cekFlags.FindAll(x => !sysFlags.Contains(x)); else customFlags = cekFlags; if (customFlags != null && customFlags.Count > 0) this.CustomFlagsTextEdit.EditValue = FlagsHelper.ToString(customFlags); } } /// /// 验证 /// public bool Valid() { //临时 var flags = this.CustomFlagsTextEdit.Text.Trim(); if (!string.IsNullOrEmpty(flags)) { var list = FlagsHelper.ToList(flags); if (list == null) { this.dxErrorProvider1.SetError(this.CustomFlagsTextEdit, "格式错误"); return false; } } return true; } /// /// 获取数据 /// public List GetFlags() { var list = new List(); foreach (CheckedListBoxItem item in this.clbFlags.Items) { if (item.CheckState == CheckState.Checked) list.Add(item.Value.ToString()); } var custom = this.CustomFlagsTextEdit.Text.Trim(); var flags = FlagsHelper.ToList(custom); if (flags != null) list.AddRange(flags); if (list.Count < 1) return default; return list; } } }