public override void SetFormState(Form form) { form.MaximizeBox = false; form.MinimizeBox = false; form.TopMost = true; form.ShowInTaskbar = true; form.FormClosing += (sender, e) => { if (form.DialogResult == DialogResult.OK) { try { string hashPassword = null; if (SecurtiyService == null) { throw new Exception("安全服务还未初始化"); } if (TextEditPassword.Text.IsNotNullOrEmpty()) { hashPassword = SecurityPublic.ComputeHashString(TextEditPassword.Text); } var userID = SecurtiyService.Login(TextEditUser.Text, hashPassword); SecurityPublic.ApplicationUser = new UserToken() { UserID = userID, }; } catch (Exception err) { UIPublic.ShowExceptionDialog(err); e.Cancel = true; } } }; base.SetFormState(form); }
private void ButtonRecoverLayout_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (UIPublic.ShowYesNoDialog("您确定要清除当前的布局并恢复默认布局吗?") == DialogReturn.Yes) { this.DockManager.SetLayoutData(DefaultLayoutData); } }
private void ButtonProperty_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { UIPublic.ShowWaitingForm(); var propertyValue = EditValue; var objectType = propertyValue.GetType(); BaseObjectEditControl editControl = null; // 如果不是PaoObject类型,则显示默认编辑控件 if (!objectType.IsAddonType()) { editControl = EditorPublic.CreateEditControl(objectType) as BaseObjectEditControl; } if (editControl == null) { var editController = EditorPublic.GetOrCreateEditControllerFromStorage <ObjectLayoutEditController>(objectType); editControl = editController.CreateEditControl(objectType) as BaseObjectEditControl; } editControl.EditValue = IOPublic.ObjectClone(propertyValue); UIPublic.CloseWaitingForm(); if (WinFormPublic.ShowDialog(editControl) == DialogReturn.OK) { EditValue = editControl.EditValue; } SetControlStatus(); }
/// <summary> /// 导出当前对象 /// </summary> public static void ExportObject(object obj , string defaultFileName = null , params string[] defaultFileExtentions) { string fileName = defaultFileName; string[] fileExtentions; if (defaultFileExtentions.IsNotNullOrEmpty()) { fileExtentions = defaultFileExtentions; } else { fileExtentions = new string[] { FileExtentions.CONFIG , FileExtentions.XML , FileExtentions.All }; } if (UIPublic.ShowSaveFileDialog("导出", ref fileName , fileExtentions) == DialogReturn.OK) { if (fileName.IsNullOrEmpty()) { UIPublic.ShowErrorDialog("输入了错误的文件名"); } else { IOPublic.WriteObjectToFile(fileName, obj); } } }
private void ButtonRecoverFormat_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (UIPublic.ShowYesNoCancelDialog("您是否需要默认格式?") == DialogReturn.Yes) { this.DataLayoutControl.RestoreDefaultLayout(); } }
private void ButtonRecoverLayout_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (UIPublic.ShowYesNoDialog("您是否要恢复表格的默认格式?") == DialogReturn.Yes) { RecoverLayout(); } }
/// <summary> /// 显示异常对话框 /// </summary> /// <param name="exception">异常对话框</param> protected virtual void ShowExceptionDialog(Exception exception) { UIPublic.ShowWaitingForm(); var eventInfo = new ExceptionEventInfo(exception, true, true); UIPublic.CloseWaitingForm(); UIPublic.ShowEventDialog(eventInfo); }
private void ButtonConfigTools_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { UIPublic.ShowWaitingForm(); var objectTreeControl = new ObjectTreeEditControl(); objectTreeControl.EditValue = PaoApplication.Default; UIPublic.CloseWaitingForm(); WinFormPublic.ShowDialog(objectTreeControl); }
private void ButtonRecoverFormat_ItemClick(object sender, ItemClickEventArgs e) { if (DefaultLayoutData.IsNotNullOrEmpty()) { if (UIPublic.ShowYesNoDialog("您是否需要默认格式?") == DialogReturn.Yes) { EditorPublic.RemoveEditControllerFromStorage(EditValue.GetType(), Controller.GetType()); this.PropertyGridControl.SetLayoutData(DefaultLayoutData); } } }
private void Edit_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e) { if (e.Button.Kind == ButtonPredefines.Plus) { if (UIPublic.ShowYesNoDialog("您是否要创建一个新的Guid?") == DialogReturn.Yes) { var edit = sender as ButtonEdit; edit.EditValue = Guid.NewGuid().ToString(); } } }
public void Waiting(Action action, string message = "程序运行中...") { SetStatusText(message); UIPublic.ShowWaitingForm(); this.EditItemWaitingBar.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; this.Refresh(); action(); this.EditItemWaitingBar.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; SetStatusText(Message_Status_Ready); UIPublic.CloseWaitingForm(); }
/// <summary> /// 创建事件 /// </summary> /// <param name="source">源</param> /// <param name="message">消息</param> /// <param name="type">事件类型</param> /// <param name="screenshot">是否截屏</param> /// <param name="snapshot">是否进行快照</param> /// <returns></returns> public EventInfo(string type , string message , bool screenshot = false , bool snapshot = false) { Source = "PAO"; Time = DateTime.Now; Message = message; Type = type; ScreenShot = screenshot ? UIPublic.ScreenShot() : (Image)null; AssetSnapshot = snapshot ? IOPublic.ObjectClone(PaoApplication.Default) : null; }
private void ButtonAddonSelect_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { UIPublic.ShowWaitingForm(); var typeSelectControl = new TypeSelectControl(); typeSelectControl.Initialize(p => { return(p.IsDerivedFrom <DataFilter>()); }); UIPublic.CloseWaitingForm(); WinFormPublic.ShowDialog(typeSelectControl); }
private void ButtonTestException_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { UIPublic.ShowWaitingForm(); var eventInfo = new ExceptionEventInfo(new Exception("这是测试消息") , true , true).AddEventData("测试", "测试"); var eventControl = new EventControl(); eventControl.Initialize(eventInfo); UIPublic.CloseWaitingForm(); WinFormPublic.ShowDialog(eventControl); }
private void ButtonClearDataFields_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (UIPublic.ShowYesNoDialog("您确定要清空所有表的列并重建吗?") == DialogReturn.Yes) { var controller = Controller as ReportController; foreach (var reportTable in controller.Tables) { reportTable.DataColumns = null; RebuildTableColumns(); } } }
/// <summary> /// 添加菜单到子菜单中(包含下级菜单) /// </summary> /// <param name="barSubItem">子菜单</param> /// <param name="uiItem">菜单项</param> /// <param name="container">视图容器</param> public static void AddMenuToSubItem(object barSubItem, IUIItem uiItem, IViewContainer container) { BarItem barItem = null; if (uiItem is FolderItem) { var menuItem = uiItem as FolderItem; if (menuItem.ChildMenuItems.IsNotNull()) { var newSubItem = new BarSubItem(); foreach (var childFunctionItem in menuItem.ChildMenuItems) { AddMenuToSubItem(newSubItem, childFunctionItem, container); } barItem = newSubItem; } } if (barItem == null) { barItem = new BarButtonItem(); } barItem.Caption = uiItem.Caption; barItem.Glyph = uiItem.Icon; barItem.LargeGlyph = uiItem.LargeIcon; barItem.ItemClick += (sender, e) => { try { if (uiItem is BaseController) { var controller = uiItem as BaseController; controller.CreateAndOpenView(container); } } catch (Exception err) { UIPublic.ShowErrorDialog(err.FormatException()); } }; if (barSubItem is BarSubItem) { var barItemLink = barSubItem.As <BarSubItem>().AddItem(barItem); barItemLink.RecentIndex = 1; } else if (barSubItem is Bar) { var barItemLink = barSubItem.As <Bar>().AddItem(barItem); } else { throw new Exception("此对象不支持添加子菜单"); } }
public override void SetFormState(Form form) { form.WindowState = FormWindowState.Normal; form.FormBorderStyle = FormBorderStyle.FixedDialog; form.FormClosing += (sender, e) => { if (form.DialogResult == DialogResult.OK && KeyValue.IsNullOrEmpty()) { UIPublic.ShowWarningDialog("键值不能为空"); e.Cancel = true; } }; }
/// <summary> /// 导出 /// </summary> public void Export() { if (ExportFileFilters == null) { throw new Exception("未定义可导出的扩展名"); } string fileName = ""; if (UIPublic.ShowSaveFileDialog("导出", ref fileName, ExportFileFilters) == DialogReturn.OK) { OnExport(fileName); } }
private void ButtonSave_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { string fileName = "*.png"; if (UIPublic.ShowSaveFileDialog("保存图片", ref fileName , FileExtentions.PNG , FileExtentions.JPG , FileExtentions.BMP , FileExtentions.All) == DialogReturn.OK) { PictureEdit.Image.Save(fileName); } }
private void ButtonRemoteException_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { UIPublic.ShowWaitingForm(); try { var testService = new TcpRemoteFactory <ITestService>() { ServerAddress = "localhost:7990", ServiceName = "TestService" }.Value; testService.GetString("Exception"); } catch (Exception err) { UIPublic.CloseWaitingForm(); UIPublic.ShowEventDialog(new ExceptionEventInfo(err, true, true)); } }
private void ButtonTestInformation_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { EventControl eventControl = null; UIPublic.ShowWaitingForm(); var eventInfo = new EventInfo(EventInfo.EventType_Information , "这是测试消息" , true , true); eventControl = new EventControl(); eventControl.Initialize(eventInfo); UIPublic.CloseWaitingForm(); WinFormPublic.ShowDialog(eventControl); }
private void ButtonCallRemote_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { UIPublic.ShowWaitingForm(); string resultString = ""; var task = Task.Factory.StartNew(() => { var testService = new TcpRemoteFactory <ITestService>() { ServerAddress = "localhost:7990", ServiceName = "TestService" }.Value; resultString = testService.GetString("Hello world!"); }); task.Wait(); UIPublic.CloseWaitingForm(); UIPublic.ShowInfomationDialog(resultString); }
/// <summary> /// 导入对象 /// </summary> public static void ImportObject(Action <object> action , string defaultFileName = null , params string[] defaultFileExtentions) { string fileName = defaultFileName; string[] fileExtentions; if (defaultFileExtentions.IsNotNullOrEmpty()) { fileExtentions = defaultFileExtentions; } else { fileExtentions = new string[] { FileExtentions.CONFIG , FileExtentions.XML , FileExtentions.All }; } if (UIPublic.ShowOpenFileDialog("导入", ref fileName , fileExtentions) == DialogReturn.OK) { if (!File.Exists(fileName)) { UIPublic.ShowErrorDialog("选择的文件不存在"); } else { var obj = IOPublic.ReadObjectFromFile(fileName); try { action(obj); } catch (Exception err) { UIPublic.ShowErrorDialog(err.Message); } } } }
/// <summary> /// 根据对象填充属性字段 /// </summary> /// <param name="groupItem">组项目</param> /// <param name="objType">对象类型</param> private void RetrieveFields(LayoutControlGroup groupItem, Type objType) { UIPublic.ShowWaitingForm(); this.DataLayoutControl.CloseControl(); EditControls.Clear(); this.DataLayoutControl.Clear(true, true); var controller = Controller as ObjectLayoutEditController; if (objType == null) { return; } this.DataLayoutControl.SuspendLayout(); TabbedControlGroup tabbledGroup = null; foreach (PropertyDescriptor propDesc in TypeDescriptor.GetProperties(objType)) { if (!propDesc.IsBrowsable) { continue; } BaseEditController editController = null; Control editControl = null; if (controller != null) { editController = controller.GetPredefinedEditController(propDesc.PropertyType, propDesc.Name); } if (editController == null) { if (propDesc.PropertyType.IsAddon()) { var commonEditController = new CommonObjectEditController(); commonEditController.StartEditProperty(EditValue, propDesc.Name); editController = commonEditController; } else { editController = EditorPublic.GetEditController(propDesc); } } editControl = editController.CreateEditControl(propDesc.PropertyType); if (editControl.GetType().GetProperty("EditValue") == null) { throw new Exception("编辑控件必须实现EditValue属性"); } LayoutControlItem layoutControlItem = null; if (editControl is BaseObjectEditControl) { if (tabbledGroup == null) { tabbledGroup = groupItem.AddTabbedGroup(); } var layoutGroupItem = tabbledGroup.AddTabPage(); layoutGroupItem.Name = "Group_" + propDesc.Name; layoutGroupItem.Text = propDesc.DisplayName; layoutGroupItem.CustomizationFormText = "组_" + propDesc.DisplayName; layoutGroupItem.Padding = new DevExpress.XtraLayout.Utils.Padding(0); layoutControlItem = layoutGroupItem.AddItem(); layoutControlItem.TextLocation = DevExpress.Utils.Locations.Top; } else { layoutControlItem = groupItem.AddItem(); layoutControlItem.TextLocation = DevExpress.Utils.Locations.Left; } EditControls.Add(propDesc, editControl); editControl.Tag = propDesc; editControl.Name = propDesc.Name; layoutControlItem.Control = editControl; layoutControlItem.Name = propDesc.Name; layoutControlItem.Text = propDesc.DisplayName; layoutControlItem.CustomizationFormText = propDesc.DisplayName; if (editControl is BaseObjectEditControl) { layoutControlItem.TextVisible = false; } else { layoutControlItem.TextVisible = true; } } this.DataLayoutControl.ResumeLayout(); this.DataLayoutControl.SetDefaultLayout(); // 读取布局数据 if (controller != null && controller.LayoutData.IsNotNullOrEmpty()) { this.DataLayoutControl.SetLayoutData(controller.LayoutData); } UIPublic.CloseWaitingForm(); }
private void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) { UIPublic.ShowExceptionDialog(e.Exception); }
private void PropertyGridControl_PopupMenuShowing(object sender, DevExpress.XtraVerticalGrid.Events.PopupMenuShowingEventArgs e) { if (e.Row != null) { var controller = Controller as ObjectPropertyEditController; if (controller == null) { return; } var propDesc = PropertyGridControl.GetPropertyDescriptor(e.Row); if (propDesc != null) { // 修改字段标题 var menuChangeCaption = new DXEditMenuItem("标题(&C)" , new TextEditController().CreateRepositoryItem(typeof(string))); menuChangeCaption.Width = 100; menuChangeCaption.EditValue = e.Row.Properties.Caption; menuChangeCaption.BeginGroup = true; menuChangeCaption.EditValueChanged += (s, a) => { if (menuChangeCaption.EditValue.IsNull()) { e.Row.Properties.Caption = propDesc.Name; } else { e.Row.Properties.Caption = (string)menuChangeCaption.EditValue; } }; e.Menu.Items.Add(menuChangeCaption); // 增加删除行菜单 var menuHideRow = new DXMenuItem("隐藏行(&D)" , (s, a) => { e.Row.Visible = false; }); e.Menu.Items.Add(menuHideRow); // 增加更改编辑器菜单 var menuChangeEditor = new DXMenuItem("更改编辑器(&E)..." , (s, a) => { Type editControllerType; if (EditorPublic.SelectEditControllerType(propDesc.PropertyType, out editControllerType) == DialogReturn.OK) { if (editControllerType != null) { var editController = editControllerType.CreateInstance() as BaseEditController; if (controller != null) { controller.SetPredfinedEditController(propDesc.Name, editController.GetType()); } } } } , Properties.Resources.renamedatasource_16x16); menuChangeEditor.BeginGroup = true; e.Menu.Items.Add(menuChangeEditor); // 增加恢复编辑器菜单 var menuRecoverEditor = new DXMenuItem("恢复编辑器(&R)" , (s, a) => { if (UIPublic.ShowYesNoDialog("您确定要恢复默认的编辑器吗?") == DialogReturn.Yes) { controller.RemovePredefinedEditController(propDesc.Name); } } , Properties.Resources.clearformatting_16x16); e.Menu.Items.Add(menuRecoverEditor); } // 恢复所有编辑器 var menuClearEditors = new DXMenuItem("恢复所有编辑器(&C)" , (s, a) => { if (UIPublic.ShowYesNoDialog("您确定要恢复所有默认的编辑器吗?") == DialogReturn.Yes) { controller.ClearPredefinedEditControllers(); } } , Properties.Resources.clear_16x16); menuClearEditors.BeginGroup = true; e.Menu.Items.Add(menuClearEditors); } }
private void DataLayoutControl_PopupMenuShowing(object sender, PopupMenuShowingEventArgs e) { if (e.HitInfo.Item != null) { var controller = Controller as ObjectLayoutEditController; if (controller == null) { return; } var layoutItem = e.HitInfo.Item as LayoutControlItem; if (layoutItem == null) { return; } var editControl = layoutItem.Control; var propDesc = editControl.Tag as PropertyDescriptor; if (propDesc != null) { // 修改字段标题 var menuChangeCaption = new DXEditMenuItem("标题(&C)" , new TextEditController().CreateRepositoryItem(typeof(string))); menuChangeCaption.Width = 100; menuChangeCaption.EditValue = layoutItem.Text; menuChangeCaption.BeginGroup = true; menuChangeCaption.EditValueChanged += (s, a) => { if (menuChangeCaption.EditValue.IsNull()) { layoutItem.Text = propDesc.Name; } else { layoutItem.Text = (string)menuChangeCaption.EditValue; } }; e.Menu.Items.Add(menuChangeCaption); // 增加更改编辑器菜单 var menuChangeEditor = new DXMenuItem("更改编辑器(&E)..." , (s, a) => { Type editControllerType; if (EditorPublic.SelectEditControllerType(propDesc.PropertyType, out editControllerType) == DialogReturn.OK) { if (editControllerType != null) { var editController = editControllerType.CreateInstance() as BaseEditController; // 清除前保存配置 controller.LayoutData = this.DataLayoutControl.GetLayoutData(); controller.SetPredfinedEditController(propDesc.Name, editController.GetType()); EditValue = EditValue; } } } , Properties.Resources.renamedatasource_16x16); menuChangeEditor.BeginGroup = true; e.Menu.Items.Add(menuChangeEditor); // 增加恢复编辑器菜单 var menuRecoverEditor = new DXMenuItem("恢复编辑器(&R)" , (s, a) => { if (UIPublic.ShowYesNoDialog("您确定要恢复默认的编辑器吗?") == DialogReturn.Yes) { // 清除前保存配置 controller.LayoutData = this.DataLayoutControl.GetLayoutData(); controller.RemovePredefinedEditController(propDesc.Name); EditValue = EditValue; } } , Properties.Resources.clearformatting_16x16); e.Menu.Items.Add(menuRecoverEditor); } // 恢复所有编辑器 var menuClearEditors = new DXMenuItem("恢复所有编辑器(&C)" , (s, a) => { if (UIPublic.ShowYesNoDialog("您确定要恢复所有默认的编辑器吗?") == DialogReturn.Yes) { // 清除前保存配置 controller.LayoutData = this.DataLayoutControl.GetLayoutData(); controller.ClearPredefinedEditControllers(); EditValue = EditValue; } } , Properties.Resources.clear_16x16); menuClearEditors.BeginGroup = true; e.Menu.Items.Add(menuClearEditors); } }