using DevExpress.XtraEditors; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using DevExpress.XtraGrid; using DevExpress.XtraGrid.Views.Grid; using DevExpress.XtraLayout; using DevExpress.XtraTab; using WinformGeneralDeveloperFrame.Commons; namespace WinformGeneralDeveloperFrame { public partial class FrmBaseForm : DevExpress.XtraEditors.XtraForm { public string ID = string.Empty; // 主键 private XtraTabControl xtraTab; private GridControl gridControl; private GridView gridView; private LayoutControlGroup[] controlGroups; private object DataType; public FrmBaseForm() { InitializeComponent(); } public void InitFrom(XtraTabControl xtraTab, GridControl gridControl, GridView gridView, LayoutControlGroup[] controlGroups, object DataType) { InitFrom(xtraTab, gridControl, gridView, controlGroups); this.DataType = DataType; } public void InitFrom(XtraTabControl xtraTab, GridControl gridControl, GridView gridView, LayoutControlGroup[] controlGroups) { this.xtraTab = xtraTab; this.gridControl = gridControl; this.gridView = gridView; this.controlGroups = controlGroups; InitToolBtntatus(EFormStatus.eInit); InitEvent(); } public void InitEvent() { xtraTab.SelectedPageChanged += xtraTabControl1_SelectedPageChanged; gridControl.MouseDoubleClick += gridControl_MouseDoubleClick; } private void xtraTabControl1_SelectedPageChanged(object sender, DevExpress.XtraTab.TabPageChangedEventArgs e) { } private void gridControl_MouseDoubleClick(object sender, EventArgs e) { var dr = this.gridView.GetFocusedRow(); if (dr != null) { this.ModelDataToControl(dr); xtraTab.SelectedTabPageIndex = 1; SetControlStatus(controlGroups, true); InitToolBtntatus(EFormStatus.eView); gridControlMouseDoubleClickFunction(sender, e); } } public virtual void gridControlMouseDoubleClickFunction(object sender, EventArgs e) { } private void btnAdd_Click(object sender, EventArgs e) { xtraTab.SelectedTabPageIndex = 1; xtraTab.TabPages[0].PageEnabled = false; ClearScreen(); DateEdit dt = (DateEdit)this.getControl("txtcreateTime"); dt.DateTime = DateTime.Now; LookUpEditBase look= (LookUpEditBase)this.getControl("txtcreatorId"); DateEdit dt1 = (DateEdit)this.getControl("txteditTime"); dt1.DateTime = DateTime.Now; LookUpEditBase look1 = (LookUpEditBase)this.getControl("txteditorId"); look1.EditValue = AppInfo.LoginUserInfo.id; look.EditValue = AppInfo.LoginUserInfo.id; SetControlStatus(controlGroups, false); InitToolBtntatus(EFormStatus.eAdd); AddFunction(); } public virtual void AddFunction() { } private void btnEdit_Click(object sender, EventArgs e) { xtraTab.TabPages[0].PageEnabled = false; DateEdit dt =(DateEdit) this.getControl("txteditTime"); dt.DateTime=DateTime.Now; LookUpEditBase look = (LookUpEditBase)this.getControl("txteditorId"); look.EditValue = AppInfo.LoginUserInfo.id; SetControlStatus(controlGroups, false); InitToolBtntatus(EFormStatus.eEdit); EditFunction(); } public virtual void EditFunction() { } private void btnSave_Click(object sender, EventArgs e) { xtraTab.TabPages[0].PageEnabled = true; if (CheckInput()&&SaveFunction()) { "保存成功!".ShowTips(); InitToolBtntatus(EFormStatus.eView); InitgrdListDataSource(); SetControlStatus(controlGroups, true); } } public virtual void InitgrdListDataSource() { } public virtual bool SaveFunction() { return true; } private void btnSearch_Click(object sender, EventArgs e) { //InitToolBtntatus(EFormStatus.e); SearchFunction(); } public virtual void SearchFunction() { } private void btnCanel_Click(object sender, EventArgs e) { xtraTab.TabPages[0].PageEnabled = true; InitToolBtntatus(EFormStatus.eCanel); CanelFunction(); SetControlStatus(controlGroups, true); } public virtual void CanelFunction() { } public virtual bool CheckInput() { return true; } private void btnDel_Click(object sender, EventArgs e) { if ("确定删除?".ShowYesNoAndTips() == DialogResult.Yes) { if (DelFunction()) { InitToolBtntatus(EFormStatus.eDelete); InitgrdListDataSource(); ClearScreen(); } } } public virtual bool DelFunction() { return true; } public void SetControlStatus( LayoutControlGroup[] controlGroups, bool flag) { if (controlGroups != null) { foreach (LayoutControlGroup col in controlGroups) { SetLayoutControlReadOnly(flag, col); } } } public void InitToolBtntatus(EFormStatus status) { switch (status) { case EFormStatus.eInit: { btnAdd.Enabled = true; btnDel.Enabled = false; btnEdit.Enabled = false; btnSearch.Enabled = true; btnCanel.Enabled = false; btnSave.Enabled = false; }; break; case EFormStatus.eView: { btnAdd.Enabled = true; btnDel.Enabled = true; btnEdit.Enabled = true; btnSearch.Enabled = false; btnCanel.Enabled = false; btnSave.Enabled = false; }; break; case EFormStatus.eViewTab: { btnAdd.Enabled = true; btnDel.Enabled = false; btnEdit.Enabled = false; btnSearch.Enabled = false; btnCanel.Enabled = false; btnSave.Enabled = false; }; break; case EFormStatus.eAdd: { btnAdd.Enabled = false; btnDel.Enabled = false; btnEdit.Enabled = false; btnSearch.Enabled = false; btnCanel.Enabled = true; btnSave.Enabled = true; }; break; case EFormStatus.eDelete: { btnAdd.Enabled = true; btnDel.Enabled = false; btnEdit.Enabled = false; btnSearch.Enabled = true; btnCanel.Enabled = false; btnSave.Enabled = false; } ;break; case EFormStatus.eEdit: { btnAdd.Enabled = false; btnDel.Enabled = false; btnEdit.Enabled = false; btnSearch.Enabled = false; btnCanel.Enabled = true; btnSave.Enabled = true; }; break; case EFormStatus.eCanel: { btnAdd.Enabled = true; btnDel.Enabled = true; btnEdit.Enabled = true; btnSearch.Enabled = false; btnCanel.Enabled = false; btnSave.Enabled = false; } ;break; } } public void SetLayoutControlReadOnly(bool flag, LayoutControlGroup col) { foreach (var con1 in col.Items) { if (con1.GetType().Name == "LayoutControlItem") { LayoutControlItem con = con1 as LayoutControlItem; if (con.Control == null) continue; { DevExpress.XtraEditors.BaseEdit d = con.Control as BaseEdit; if (d != null && !string.IsNullOrEmpty(d.Name)) { if (d.Name.Substring(3) == "creatorId" || d.Name.Substring(3) == "createTime" || d.Name.Substring(3) == "editorId" || d.Name.Substring(3) == "editTime" || d.Name.Substring(3) == "id") { d.ReadOnly = true; } else { d.ReadOnly = flag; } } } } } } public void ClearScreen() { this.ID = "";////需要设置为空,表示新增 ClearControlValue(this); } public void ClearControlValue(System.Windows.Forms.Control ctrl) { ClearSinglelValue(ctrl); if (ctrl.Controls.Count > 0) { foreach (System.Windows.Forms.Control control in ctrl.Controls) { ClearControlValue(control); } } } public void ClearSinglelValue(System.Windows.Forms.Control ctrl) { switch (ctrl.GetType().Name) { case "TextEdit": case "MemoEdit": (ctrl).Text = ""; break; case "LookUpEdit": ((LookUpEdit)ctrl).EditValue=""; break; case "CheckEdit": ((CheckEdit)ctrl).Checked = false; break; case "ComboBoxEdit": ((ComboBoxEdit)ctrl).EditValue = ""; break; case "TreeListLookUpEdit": ((TreeListLookUpEdit)ctrl).EditValue = ""; break; case "CheckedComboBoxEdit": ((CheckedComboBoxEdit)ctrl).SetEditValue(""); break; case "DateEdit": ((DateEdit)ctrl).EditValue=null; break; } } private void FrmBaseForm_Load(object sender, EventArgs e) { InitgrdListDataSource(); } } /// /// 窗体状态 /// public enum EFormStatus { eViewTab = 5,//tab切换 eView = 0,//详情 eAdd = 1,//新增 eEdit = 2,//编辑 eDelete = 3,//删除 eCanel = 6,//取消 eInit=7//初始化 } }