using CloudBuilder.Core.DependencyInjection.Form; using CloudBuilder.Core.DependencyInjection.Request; using CloudBuilder.Gui.DependencyInjection; using CloudBuilder.Security.Policy; using CloudBuilder.Security.Utility; using Krypton.Toolkit; using Microsoft.AspNetCore.Authorization; using Microsoft.Extensions.DependencyInjection; using Microsoft.IdentityModel.Tokens; using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Linq; using System.Resources; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace CloudBuilder.Gui { public class GuiOperateHelper { private LoginContextPermission loginContextPermission; public GuiOperateHelper() { this.loginContextPermission = new LoginContextPermission(); } public void EnableControls(bool enable, IComponent c) { if ((c is Control)) ((Control)c).SuspendLayout(); Enable(enable, c); if ((c is Control)) ((Control)c).ResumeLayout(); } public void EnableControls(bool enable, Control.ControlCollection cc) { IEnumerator enumerator = cc.GetEnumerator(); while (enumerator.MoveNext()) { Control current = (Control)enumerator.Current; EnableControls(enable, current); } } public void EnableControls(bool enable, params IComponent[] cc) { foreach (IComponent c in cc) { EnableControls(enable, c); } } public void EnableControls(bool enable, List cc) { foreach (IComponent c in cc) { EnableControls(enable, c); } } public bool CheckValidate(Control.ControlCollection cc) { IEnumerator enumerator = cc.GetEnumerator(); while (enumerator.MoveNext()) { Control current = (Control)enumerator.Current; if (!CheckValidate(current)) return false; } return true; } public bool CheckValidate(params IComponent[] cc) { foreach (IComponent c in cc) { if (!CheckValidate(c)) return false; } return true; } public bool CheckValidate(List cc) { foreach (IComponent c in cc) { if (!CheckValidate(c)) return false; } return true; } public void ResetControls(params IComponent[] cc) { foreach (IComponent c in cc) { ResetControls(c); } } public void ResetControls(List cc) { ResetControls(cc.ToArray()); } public void ResetControls(IComponent c) { if (!(c is Control)) return; ((Control)c).SuspendLayout(); Reset(((Control)c)); ((Control)c).ResumeLayout(); } public void ResetControls(Control.ControlCollection cc) { IEnumerator enumerator = cc.GetEnumerator(); while (enumerator.MoveNext()) { Control current = (Control)enumerator.Current; ResetControls(current); } } public void SetControlsText(params IComponent[] cc) { foreach (IComponent c in cc) { SetControlsText(c); } } public static void SetControlsText(IComponent c, ResourceManager rs) { if ((c is Control)) ((Control)c).SuspendLayout(); SetText(c, rs); if ((c is Control)) ((Control)c).ResumeLayout(); } public static void SetControlsText(Control.ControlCollection cc, ResourceManager rs) { IEnumerator enumerator = cc.GetEnumerator(); while (enumerator.MoveNext()) { Control current = (Control)enumerator.Current; SetControlsText(current, rs); } } public static void SetControlsText(ResourceManager rs, params IComponent[] cc) { foreach (IComponent c in cc) { SetControlsText(c, rs); } } public static void SetControlsText(List cc, ResourceManager rs) { foreach (Control c in cc) { SetControlsText(c, rs); } } private void Reset(IComponent c) { if (!(c is Control)) return; if (c is GridViewPagination) { ((GridViewPagination)c).Reset(); } else if (c is KryptonTextBox) { ((KryptonTextBox)c).Text = string.Empty; } else if (c is KryptonDateTimePicker) { ((KryptonDateTimePicker)c).Checked = false; } else if (c is KryptonMaskedTextBox) { ((KryptonMaskedTextBox)c).Text = string.Empty; } else if (c is KryptonNumericUpDown) { ((KryptonNumericUpDown)c).Text = "0"; } else if (c is KryptonComboBox) { ((KryptonComboBox)c).SelectedIndex = -1; } else if (c is KryptonCheckBox) { ((KryptonCheckBox)c).Checked = false; } else if (c is KryptonDataGridView) { ((KryptonDataGridView)c).Clear(); } else if (c is KryptonCheckedListBox) { ((KryptonCheckedListBox)c).Reset(); } else if (c is KryptonListBox) { ((KryptonListBox)c).Items.Clear(); } else if (c is KryptonRadioButton) { ((KryptonRadioButton)c).Checked = false; } else { if (((Control)c).HasChildren) ResetControls(((Control)c).Controls); } } private static void SetText(IComponent c, ResourceManager rs) { if (c is Label) { var text = rs.GetString(((Label)c).Name); if (text != null) ((Label)c).Text = (string)text; } if (c is KryptonLabel) { var text = rs.GetString(((KryptonLabel)c).Name); if (text != null) ((KryptonLabel)c).Text = (string)text; } else if (c is Button) { var text = rs.GetString(((Button)c).Name); if (text != null) ((Button)c).Text = (string)text; } else if (c is KryptonButton) { var text = rs.GetString(((KryptonButton)c).Name); if (text != null) ((KryptonButton)c).Text = (string)text; } else if (c is DataGridView) { SetText(((DataGridView)c).Columns, rs); } else if (c is KryptonDataGridView) { SetText(((KryptonDataGridView)c).Columns, rs); } else if (c is SplitContainer) { if (((Control)c).HasChildren) SetControlsText(((SplitContainer)c).Panel1, rs); if (((Control)c).HasChildren) SetControlsText(((SplitContainer)c).Panel2, rs); } else if (c is SplitterPanel) { if (((Control)c).HasChildren) SetControlsText(((SplitterPanel)c).Controls, rs); } else if (c is Panel) { if (((Control)c).HasChildren) SetControlsText(((Panel)c).Controls, rs); } else if (c is TableLayoutPanel) { if (((Control)c).HasChildren) SetControlsText(((TableLayoutPanel)c).Controls, rs); } else if (c is AbstractForm) { if (((Control)c).HasChildren) SetControlsText(((AbstractForm)c).Controls, rs); } } private static void SetText(DataGridViewColumnCollection c, ResourceManager rs) { foreach (DataGridViewColumn dgvc in c) { var text = rs.GetString(((DataGridViewColumn)dgvc).Name); if (text != null) dgvc.HeaderText = (string)text; } } private void Enable(bool enable, IComponent c) { IContext loginContext = null!; loginContext = ServiceHelper.GetInterfaceService()!; if (c is KryptonTextBox) { ((KryptonTextBox)c).ReadOnly = !enable; foreach (ButtonSpecAny but in ((KryptonTextBox)c).ButtonSpecs) { but.Enabled = enable ? ButtonEnabled.True : ButtonEnabled.False; } BindingContextCustomAttribute guiBindingContext = ServiceHelper.GetService()!.GetCustomAttribute((KryptonTextBox)c); if (enable) { if (guiBindingContext == null) { //沒有設置時,默认白色 ((KryptonTextBox)c).StateCommon.Back.Color1 = Color.White; } else if (guiBindingContext.EditModeColor == EnumEditModeColor.Required) { ((KryptonTextBox)c).StateCommon.Border.Color1 = Color.Peru; ((KryptonTextBox)c).StateActive.Border.DrawBorders = ((Krypton.Toolkit.PaletteDrawBorders)((( (Krypton.Toolkit.PaletteDrawBorders.Top | Krypton.Toolkit.PaletteDrawBorders.Bottom) | Krypton.Toolkit.PaletteDrawBorders.Left) | Krypton.Toolkit.PaletteDrawBorders.Right))); ((KryptonTextBox)c).StateCommon.Back.Color1 = Color.White; } else if (guiBindingContext.EditModeColor == EnumEditModeColor.ReadOnly) { ((KryptonTextBox)c).StateCommon.Border.Color1 = Color.Gainsboro; ((KryptonTextBox)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251); ((KryptonTextBox)c).ReadOnly = true; } else { ((KryptonTextBox)c).StateCommon.Back.Color1 = Color.White; } } else { ((KryptonTextBox)c).StateCommon.Border.Color1 = Color.LightGray; ((KryptonTextBox)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251); } if (guiBindingContext != null && !string.IsNullOrEmpty(guiBindingContext.PermissionName) && string.IsNullOrEmpty(guiBindingContext.DependentDetailName)) { if (guiBindingContext.PermissionMode == Operate.Find && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, Operate.Find)) { guiBindingContext.BindDataName = null!; ((KryptonTextBox)c).Text = null!; ((KryptonTextBox)c).ReadOnly = true; ((KryptonTextBox)c).StateCommon.Border.Color1 = Color.Gainsboro; ((KryptonTextBox)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251); } if (guiBindingContext.PermissionMode == Operate.Update && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, Operate.Update)) { ((KryptonTextBox)c).ReadOnly = true; ((KryptonTextBox)c).StateCommon.Border.Color1 = Color.Gainsboro; ((KryptonTextBox)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251); } } else if (guiBindingContext != null && !string.IsNullOrEmpty(guiBindingContext.PermissionName) && !string.IsNullOrEmpty(guiBindingContext.DependentDetailName)) { if (guiBindingContext.PermissionMode == Operate.Find && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, Operate.Find)) { guiBindingContext.BindDataName = null!; ((KryptonTextBox)c).Text = null!; ((KryptonTextBox)c).ReadOnly = true; ((KryptonTextBox)c).StateCommon.Border.Color1 = Color.Gainsboro; ((KryptonTextBox)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251); } if (guiBindingContext.PermissionMode == Operate.Update && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, Operate.Update)) { ((KryptonTextBox)c).ReadOnly = true; ((KryptonTextBox)c).StateCommon.Border.Color1 = Color.Gainsboro; ((KryptonTextBox)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251); } } } else if (c is KryptonComboBox) { ((KryptonComboBox)c).Enabled = enable; BindingContextCustomAttribute guiBindingContext = ServiceHelper.GetService()!.GetCustomAttribute((KryptonComboBox)c); if (enable) { ((KryptonComboBox)c).StateCommon.ComboBox.Border.Width = 1; if (guiBindingContext == null) { //沒有設置時,默认白色 ((KryptonComboBox)c).StateCommon.ComboBox.Back.Color1 = Color.White; ((KryptonComboBox)c).StateCommon.ComboBox.Border.Color1 = Color.FromArgb(215, 229, 243); } else if (guiBindingContext.EditModeColor == EnumEditModeColor.Required) { ((KryptonComboBox)c).StateCommon.ComboBox.Back.Color1 = Color.White; ((KryptonComboBox)c).StateCommon.ComboBox.Border.Color1 = Color.Peru; ((KryptonComboBox)c).StateActive.ComboBox.Border.DrawBorders = ((Krypton.Toolkit.PaletteDrawBorders)((( (Krypton.Toolkit.PaletteDrawBorders.Top | Krypton.Toolkit.PaletteDrawBorders.Bottom) | Krypton.Toolkit.PaletteDrawBorders.Left) | Krypton.Toolkit.PaletteDrawBorders.Right))); } else if (guiBindingContext.EditModeColor == EnumEditModeColor.ReadOnly) { ((KryptonComboBox)c).StateCommon.ComboBox.Back.Color1 = Color.FromArgb(234, 242, 251); ((KryptonComboBox)c).StateCommon.ComboBox.Border.Color1 = Color.LightGray; ((KryptonComboBox)c).Enabled = false; } else { ((KryptonComboBox)c).StateCommon.ComboBox.Back.Color1 = Color.White; ((KryptonComboBox)c).StateCommon.ComboBox.Border.Color1 = Color.FromArgb(215, 229, 243); } } else { ((KryptonComboBox)c).StateDisabled.ComboBox.Back.Color1 = Color.FromArgb(234, 242, 251); ((KryptonComboBox)c).StateDisabled.ComboBox.Border.Color1 = Color.LightGray; ((KryptonComboBox)c).StateDisabled.ComboBox.Content.Color1 = Color.Black; } if (guiBindingContext != null && !string.IsNullOrEmpty(guiBindingContext.PermissionName) && string.IsNullOrEmpty(guiBindingContext.DependentDetailName)) { if (guiBindingContext.PermissionMode == Operate.Find && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, Operate.Find)) { guiBindingContext.BindDataName = null!; ((KryptonComboBox)c).SelectedIndex = -1; ((KryptonComboBox)c).Enabled = false; ((KryptonComboBox)c).StateCommon.ComboBox.Back.Color1 = Color.FromArgb(234, 242, 251); ((KryptonComboBox)c).StateCommon.ComboBox.Border.Color1 = Color.LightGray; } if (guiBindingContext.PermissionMode == Operate.Update && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, Operate.Update)) { ((KryptonComboBox)c).Enabled = false; ((KryptonComboBox)c).StateCommon.ComboBox.Back.Color1 = Color.FromArgb(234, 242, 251); ((KryptonComboBox)c).StateCommon.ComboBox.Border.Color1 = Color.LightGray; } } else if (guiBindingContext != null && !string.IsNullOrEmpty(guiBindingContext.PermissionName) && !string.IsNullOrEmpty(guiBindingContext.DependentDetailName)) { if (guiBindingContext.PermissionMode == Operate.Find && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, Operate.Find)) { guiBindingContext.BindDataName = null!; ((KryptonComboBox)c).SelectedIndex = -1; ((KryptonComboBox)c).Enabled = false; ((KryptonComboBox)c).StateCommon.ComboBox.Back.Color1 = Color.FromArgb(234, 242, 251); ((KryptonComboBox)c).StateCommon.ComboBox.Border.Color1 = Color.LightGray; } if (guiBindingContext.PermissionMode == Operate.Update && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, Operate.Update)) { ((KryptonComboBox)c).Enabled = false; ((KryptonComboBox)c).StateCommon.ComboBox.Back.Color1 = Color.FromArgb(234, 242, 251); ((KryptonComboBox)c).StateCommon.ComboBox.Border.Color1 = Color.LightGray; } } } else if (c is KryptonCheckBox) { ((KryptonCheckBox)c).Enabled = enable; BindingContextCustomAttribute guiBindingContext = ServiceHelper.GetService()!.GetCustomAttribute((KryptonCheckBox)c); if (enable) { ((KryptonCheckBox)c).StateCommon.ShortText.Color1 = Color.Black; ((KryptonCheckBox)c).StateCommon.LongText.Color1 = Color.Black; if (guiBindingContext != null && guiBindingContext.EditModeColor == EnumEditModeColor.ReadOnly) { ((KryptonCheckBox)c).Enabled = false; } } else { ((KryptonCheckBox)c).StateCommon.ShortText.Color1 = Color.DimGray; ((KryptonCheckBox)c).StateCommon.LongText.Color1 = Color.DimGray; } if (guiBindingContext != null && !string.IsNullOrEmpty(guiBindingContext.PermissionName) && string.IsNullOrEmpty(guiBindingContext.DependentDetailName)) { if (guiBindingContext.PermissionMode == Operate.Find && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, Operate.Find)) { guiBindingContext.BindDataName = null!; ((KryptonCheckBox)c).Visible = false; } if (guiBindingContext.PermissionMode == Operate.Update && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, Operate.Update)) { ((KryptonCheckBox)c).Enabled = false; } } else if (guiBindingContext != null && !string.IsNullOrEmpty(guiBindingContext.PermissionName) && !string.IsNullOrEmpty(guiBindingContext.DependentDetailName)) { if (guiBindingContext.PermissionMode == Operate.Find && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, Operate.Find)) { guiBindingContext.BindDataName = null!; ((KryptonCheckBox)c).Visible = false; } if (guiBindingContext.PermissionMode == Operate.Update && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, Operate.Update)) { ((KryptonCheckBox)c).Enabled = false; } } } else if (c is KryptonDateTimePicker) { ((KryptonDateTimePicker)c).Enabled = enable; BindingContextCustomAttribute guiBindingContext = ServiceHelper.GetService()!.GetCustomAttribute((KryptonDateTimePicker)c); if (enable) { ((KryptonDateTimePicker)c).StateCommon.Border.Width = 1; if (guiBindingContext == null) { //沒有設置時,默认白色 ((KryptonDateTimePicker)c).StateCommon.Border.Color1 = Color.FromArgb(215, 229, 243); ((KryptonDateTimePicker)c).StateCommon.Back.Color1 = Color.White; } else if (guiBindingContext.EditModeColor == EnumEditModeColor.Required) { ((KryptonDateTimePicker)c).StateCommon.Back.Color1 = Color.White; ((KryptonDateTimePicker)c).StateCommon.Border.Color1 = Color.Peru; ((KryptonDateTimePicker)c).StateActive.Border.DrawBorders = ((Krypton.Toolkit.PaletteDrawBorders)((( (Krypton.Toolkit.PaletteDrawBorders.Top | Krypton.Toolkit.PaletteDrawBorders.Bottom) | Krypton.Toolkit.PaletteDrawBorders.Left) | Krypton.Toolkit.PaletteDrawBorders.Right))); } else if (guiBindingContext.EditModeColor == EnumEditModeColor.ReadOnly) { ((KryptonDateTimePicker)c).StateCommon.Border.Color1 = Color.LightGray; ((KryptonDateTimePicker)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251); ((KryptonDateTimePicker)c).Enabled = false; } else { ((KryptonDateTimePicker)c).StateCommon.Back.Color1 = Color.White; ((KryptonDateTimePicker)c).StateCommon.Border.Color1 = Color.FromArgb(215, 229, 243); } } else { ((KryptonDateTimePicker)c).StateDisabled.Border.Color1 = Color.LightGray; ((KryptonDateTimePicker)c).StateDisabled.Back.Color1 = Color.FromArgb(234, 242, 251); ((KryptonDateTimePicker)c).StateDisabled.Content.Color1 = Color.Black; } if (guiBindingContext != null && !string.IsNullOrEmpty(guiBindingContext.PermissionName) && string.IsNullOrEmpty(guiBindingContext.DependentDetailName)) { if (guiBindingContext.PermissionMode == Operate.Find && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, Operate.Find)) { guiBindingContext.BindDataName = null!; ((KryptonDateTimePicker)c).Checked = false; ((KryptonDateTimePicker)c).Enabled = false; ((KryptonDateTimePicker)c).StateCommon.Border.Color1 = Color.LightGray; ((KryptonDateTimePicker)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251); } if (guiBindingContext.PermissionMode == Operate.Update && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, Operate.Update)) { ((KryptonDateTimePicker)c).Enabled = false; ((KryptonDateTimePicker)c).StateCommon.Border.Color1 = Color.LightGray; ((KryptonDateTimePicker)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251); } } else if (guiBindingContext != null && !string.IsNullOrEmpty(guiBindingContext.PermissionName) && !string.IsNullOrEmpty(guiBindingContext.DependentDetailName)) { if (guiBindingContext.PermissionMode == Operate.Find && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, Operate.Find)) { guiBindingContext.BindDataName = null!; ((KryptonDateTimePicker)c).Checked = false; ((KryptonDateTimePicker)c).Enabled = false; ((KryptonDateTimePicker)c).StateCommon.Border.Color1 = Color.LightGray; ((KryptonDateTimePicker)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251); } if (guiBindingContext.PermissionMode == Operate.Update && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, Operate.Update)) { ((KryptonDateTimePicker)c).Enabled = false; ((KryptonDateTimePicker)c).StateCommon.Border.Color1 = Color.LightGray; ((KryptonDateTimePicker)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251); } } } else if (c is KryptonMaskedTextBox) { ((KryptonMaskedTextBox)c).ReadOnly = !enable; foreach (ButtonSpecAny but in ((KryptonMaskedTextBox)c).ButtonSpecs) { but.Enabled = enable ? ButtonEnabled.True : ButtonEnabled.False; } BindingContextCustomAttribute guiBindingContext = ServiceHelper.GetService()!.GetCustomAttribute((KryptonMaskedTextBox)c); if (enable) { if (guiBindingContext == null) { //沒有設置時,默认白色 ((KryptonMaskedTextBox)c).StateCommon.Back.Color1 = Color.White; } else if (guiBindingContext.EditModeColor == EnumEditModeColor.Required) { ((KryptonMaskedTextBox)c).StateCommon.Border.Color1 = Color.Peru; ((KryptonMaskedTextBox)c).StateActive.Border.DrawBorders = ((Krypton.Toolkit.PaletteDrawBorders)((( (Krypton.Toolkit.PaletteDrawBorders.Top | Krypton.Toolkit.PaletteDrawBorders.Bottom) | Krypton.Toolkit.PaletteDrawBorders.Left) | Krypton.Toolkit.PaletteDrawBorders.Right))); ((KryptonMaskedTextBox)c).StateCommon.Back.Color1 = Color.White; } else if (guiBindingContext.EditModeColor == EnumEditModeColor.ReadOnly) { ((KryptonMaskedTextBox)c).StateCommon.Border.Color1 = Color.Gainsboro; ((KryptonMaskedTextBox)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251); ((KryptonMaskedTextBox)c).ReadOnly = true; } else { ((KryptonMaskedTextBox)c).StateCommon.Back.Color1 = Color.White; } } else { ((KryptonMaskedTextBox)c).StateCommon.Border.Color1 = Color.Gainsboro; ((KryptonMaskedTextBox)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251); ((KryptonMaskedTextBox)c).StateCommon.Content.Color1 = Color.Black; } if (guiBindingContext != null && !string.IsNullOrEmpty(guiBindingContext.PermissionName) && string.IsNullOrEmpty(guiBindingContext.DependentDetailName)) { if (guiBindingContext.PermissionMode == Operate.Find && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, Operate.Find)) { guiBindingContext.BindDataName = null!; ((KryptonMaskedTextBox)c).Text = null!; ((KryptonMaskedTextBox)c).ReadOnly = true; ((KryptonMaskedTextBox)c).StateCommon.Border.Color1 = Color.Gainsboro; ((KryptonMaskedTextBox)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251); } if (guiBindingContext.PermissionMode == Operate.Update && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, Operate.Update)) { ((KryptonMaskedTextBox)c).ReadOnly = true; ((KryptonMaskedTextBox)c).StateCommon.Border.Color1 = Color.Gainsboro; ((KryptonMaskedTextBox)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251); } } else if (guiBindingContext != null && !string.IsNullOrEmpty(guiBindingContext.PermissionName) && !string.IsNullOrEmpty(guiBindingContext.DependentDetailName)) { if (guiBindingContext.PermissionMode == Operate.Find && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, Operate.Find)) { guiBindingContext.BindDataName = null!; ((KryptonMaskedTextBox)c).Text = null!; ((KryptonMaskedTextBox)c).ReadOnly = true; ((KryptonMaskedTextBox)c).StateCommon.Border.Color1 = Color.Gainsboro; ((KryptonMaskedTextBox)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251); } if (guiBindingContext.PermissionMode == Operate.Update && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, Operate.Update)) { ((KryptonMaskedTextBox)c).ReadOnly = true; ((KryptonMaskedTextBox)c).StateCommon.Border.Color1 = Color.Gainsboro; ((KryptonMaskedTextBox)c).StateCommon.Back.Color1 = Color.FromArgb(234, 242, 251); } } } else if (c is KryptonDataGridView) { foreach (DataGridViewColumn column in ((KryptonDataGridView)c).Columns) { column.ReadOnly = !enable; BindingContextCustomAttribute guiBindingContext = column.GetCustomAttribute(); if (enable) { if (guiBindingContext == null) { //沒有設置時,默认白色 column.DefaultCellStyle.BackColor = Color.White; } else if (guiBindingContext.EditModeColor == EnumEditModeColor.Required) { column.DefaultCellStyle.BackColor = Color.LightYellow; } else if (guiBindingContext.EditModeColor == EnumEditModeColor.ReadOnly) { column.DefaultCellStyle.BackColor = Color.Gainsboro; column.ReadOnly = true; } else { column.DefaultCellStyle.BackColor = Color.White; } } else { column.DefaultCellStyle.BackColor = Color.FromArgb(234, 242, 251); } if (guiBindingContext != null && !string.IsNullOrEmpty(guiBindingContext.PermissionName) && string.IsNullOrEmpty(guiBindingContext.DependentDetailName)) { if (guiBindingContext.PermissionMode == Operate.Find && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, Operate.Find)) { column.DataPropertyName = null; column.ReadOnly = true; column.DefaultCellStyle.BackColor = Color.FromArgb(234, 242, 251); } if (guiBindingContext.PermissionMode == Operate.Update && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, Operate.Update)) { column.ReadOnly = true; column.DefaultCellStyle.BackColor = Color.FromArgb(234, 242, 251); } } else if (guiBindingContext != null && !string.IsNullOrEmpty(guiBindingContext.PermissionName) && !string.IsNullOrEmpty(guiBindingContext.DependentDetailName)) { if (guiBindingContext.PermissionMode == Operate.Find && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, Operate.Find)) { column.DataPropertyName = null; column.ReadOnly = true; column.DefaultCellStyle.BackColor = Color.FromArgb(234, 242, 251); } if (guiBindingContext.PermissionMode == Operate.Update && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, Operate.Update)) { column.ReadOnly = true; column.DefaultCellStyle.BackColor = Color.FromArgb(234, 242, 251); } } } } if (c is KryptonCheckedListBox) { ((KryptonCheckedListBox)c).Enabled = enable; } else if (c is KryptonListBox) { ((KryptonListBox)c).Enabled = enable; } else if (c is KryptonRadioButton) { ((KryptonRadioButton)c).Enabled = enable; } else if (c is KryptonButton) { BindingContextCustomAttribute guiBindingContext = ServiceHelper.GetService()!.GetCustomAttribute((KryptonButton)c); ((KryptonButton)c).Enabled = enable; if (enable && guiBindingContext != null && !string.IsNullOrEmpty(guiBindingContext.PermissionName) && loginContext != null) { if (string.IsNullOrEmpty(guiBindingContext.DependentDetailName) && !loginContext.Assert(loginContextPermission.Assert, guiBindingContext.PermissionName, guiBindingContext.PermissionMode)) { ((KryptonButton)c).Enabled = false; } else if (!string.IsNullOrEmpty(guiBindingContext.DependentDetailName) && !loginContext.AssertDependents(loginContextPermission.AssertDependents, guiBindingContext.PermissionName, guiBindingContext.DependentDetailName, guiBindingContext.PermissionMode)) { ((KryptonButton)c).Enabled = false; } } } else { if (((Control)c).HasChildren) EnableControls(enable, ((Control)c).Controls); } } private bool CheckValidate(IComponent c) { IContext loginContext = null!; loginContext = ServiceHelper.GetInterfaceService()!; SecurityMessagePolicy securityMessagePolicy = ServiceHelper.GetTypeService()!; bool isCheck = true; if (c is KryptonTextBox) { BindingContextCustomAttribute guiBindingContext = ServiceHelper.GetService()!.GetCustomAttribute((KryptonTextBox)c); if (!((KryptonTextBox)c).ReadOnly && guiBindingContext != null && guiBindingContext.EditModeColor == EnumEditModeColor.Required) { //沒有設置時,默认白色 if (string.IsNullOrEmpty(((KryptonTextBox)c).GetValue())) { ShowMessageBox.ShowInfo(securityMessagePolicy.ComposeMessage(SecurityMessagePolicy.GUI_VALID_INPUT, GuiOperateHelper.GetLabelText(guiBindingContext.BindDisplayName))); ((KryptonTextBox)c).Focus(); return false; } } } else if (c is KryptonComboBox) { BindingContextCustomAttribute guiBindingContext = ServiceHelper.GetService()!.GetCustomAttribute((KryptonComboBox)c); if (((KryptonComboBox)c).Enabled && guiBindingContext != null && guiBindingContext.EditModeColor == EnumEditModeColor.Required) { //沒有設置時,默认白色 if (((KryptonComboBox)c).SelectedIndex <= 0) { ShowMessageBox.ShowInfo(securityMessagePolicy.ComposeMessage(SecurityMessagePolicy.GUI_VALID_SELECT, GuiOperateHelper.GetLabelText(guiBindingContext.BindDisplayName))); ((KryptonComboBox)c).Focus(); return false; } } } else if (c is KryptonDateTimePicker) { BindingContextCustomAttribute guiBindingContext = ServiceHelper.GetService()!.GetCustomAttribute((KryptonDateTimePicker)c); if (((KryptonDateTimePicker)c).Enabled && guiBindingContext != null && guiBindingContext.EditModeColor == EnumEditModeColor.Required) { //沒有設置時,默认白色 if (!((KryptonDateTimePicker)c).Checked) { ShowMessageBox.ShowInfo(securityMessagePolicy.ComposeMessage(SecurityMessagePolicy.GUI_VALID_INPUT, GuiOperateHelper.GetLabelText(guiBindingContext.BindDisplayName))); ((KryptonDateTimePicker)c).Focus(); return false; } } } else if (c is KryptonMaskedTextBox) { BindingContextCustomAttribute guiBindingContext = ServiceHelper.GetService()!.GetCustomAttribute((KryptonMaskedTextBox)c); if (!((KryptonMaskedTextBox)c).ReadOnly && guiBindingContext != null && guiBindingContext.EditModeColor == EnumEditModeColor.Required) { //沒有設置時,默认白色 if (string.IsNullOrEmpty(((KryptonMaskedTextBox)c).GetValue())) { ShowMessageBox.ShowInfo(securityMessagePolicy.ComposeMessage(SecurityMessagePolicy.GUI_VALID_INPUT, GuiOperateHelper.GetLabelText(guiBindingContext.BindDisplayName))); ((KryptonMaskedTextBox)c).Focus(); return false; } } } else if (c is KryptonDataGridView) { if (!((KryptonDataGridView)c).Enabled) return isCheck; foreach (DataGridViewRow row in ((KryptonDataGridView)c).Rows) { foreach (DataGridViewColumn column in ((KryptonDataGridView)c).Columns) { if (column.ReadOnly) continue; BindingContextCustomAttribute guiBindingContext = column.GetCustomAttribute(); if (guiBindingContext != null && guiBindingContext.EditModeColor == EnumEditModeColor.Required) { if (column is DataGridViewComboBoxColumn || column is KryptonDataGridViewTextBoxColumn) { if (string.IsNullOrEmpty(row.Cells[column.Name].Value.ToString())) { ShowMessageBox.ShowInfo(securityMessagePolicy.ComposeMessage(SecurityMessagePolicy.GUI_VALID_INPUT, column.HeaderText)); ((KryptonDataGridView)c).CurrentCell = ((KryptonDataGridView)c).Rows[row.Index].Cells[column.Index]; ((KryptonDataGridView)c).FirstDisplayedScrollingRowIndex = row.Index; return false; } } else if (column is KryptonDataGridViewDateTimePickerColumn) { if (!((KryptonDataGridViewDateTimePickerCell)row.Cells[column.Name]).Checked) { ShowMessageBox.ShowInfo(securityMessagePolicy.ComposeMessage(SecurityMessagePolicy.GUI_VALID_INPUT, column.HeaderText)); ((KryptonDataGridView)c).CurrentCell = ((KryptonDataGridView)c).Rows[row.Index].Cells[column.Index]; ((KryptonDataGridView)c).FirstDisplayedScrollingRowIndex = row.Index; return false; } } } } } } else { if (((Control)c).HasChildren) isCheck = CheckValidate(((Control)c).Controls); } return isCheck; } public static string GetLabelText(string text) { if (string.IsNullOrEmpty(text)) return null; return text.Substring(0, text.Length - 1); } public void ComposeMessage(string groupName, params Control[] cc) { foreach (Control c in cc) { c.Text = ApplicationServiceContext.localeMessageManager.ComposeMessage(groupName, c.Name); } } public void ComposeMessage(string groupName, Control.ControlCollection cc) { foreach (Control c in cc) { c.Text = ApplicationServiceContext.localeMessageManager.ComposeMessage(groupName, c.Name); } } } }