public static bool InternalExecuteWindowMenu(IDisplayManager dm, WindowMenuInfo info, Form parentForm) { object entity = dm.CurrentItem; int pos = dm.Position; //ArchiveOperationForm opForm = masterForm as ArchiveOperationForm; switch (info.Type) { case WindowMenuType.ReportSingle: { if (entity == null) { MessageForm.ShowError("请选择要打印的项!"); break; } ProgressAsyncHelper asyncHelper = new ProgressAsyncHelper( new Feng.Async.AsyncHelper.DoWork(delegate() { MyReportForm form = new MyReportForm(info.ExecuteParam); form.FillDataSet(entity); return form; }), new Feng.Async.AsyncHelper.WorkDone(delegate(object result) { if (result != null) { MyReportForm form = result as MyReportForm; form.Show(parentForm); } }), parentForm, "生成"); } break; case WindowMenuType.ReportMulti: { if (dm.Count == 0) { MessageForm.ShowError("请选择要打印的项!"); break; } object[] entities = new object[dm.Count]; for (int i = 0; i < entities.Length; ++i) { entities[i] = dm.Items[i]; } ProgressAsyncHelper asyncHelper = new ProgressAsyncHelper( new Feng.Async.AsyncHelper.DoWork(delegate() { MyReportForm form = new MyReportForm(info.ExecuteParam); form.FillDataSet(entities); return form; }), new Feng.Async.AsyncHelper.WorkDone(delegate(object result) { if (result != null) { MyReportForm form = result as MyReportForm; form.Show(parentForm); } }), parentForm, "生成"); } break; case WindowMenuType.MsReportSingle: { if (entity == null) { MessageForm.ShowError("请选择要打印的项!"); break; } ProgressAsyncHelper asyncHelper = new ProgressAsyncHelper( new Feng.Async.AsyncHelper.DoWork(delegate() { MsReportForm form = new MsReportForm(info.ExecuteParam); form.FillDataSet(entity); return form; }), new Feng.Async.AsyncHelper.WorkDone(delegate(object result) { if (result != null) { MsReportForm form = result as MsReportForm; form.Show(parentForm); // 焦点会转变到其他程序,只能这样 form.FormClosed += new FormClosedEventHandler(delegate(object sender, FormClosedEventArgs e) { parentForm.ParentForm.Activate(); }); } }), parentForm, "生成"); } break; case WindowMenuType.MsReportMulti: { if (dm.Count == 0) { MessageForm.ShowError("请选择要打印的项!"); break; } object[] entities = new object[dm.Count]; for (int i = 0; i < entities.Length; ++i) { entities[i] = dm.Items[i]; } ProgressAsyncHelper asyncHelper = new ProgressAsyncHelper( new Feng.Async.AsyncHelper.DoWork(delegate() { MsReportForm form = new MsReportForm(info.ExecuteParam); form.FillDataSet(entities); return form; }), new Feng.Async.AsyncHelper.WorkDone(delegate(object result) { if (result != null) { MsReportForm form = result as MsReportForm; form.Show(parentForm); form.FormClosed += new FormClosedEventHandler(delegate(object sender, FormClosedEventArgs e) { parentForm.ParentForm.Activate(); }); } }), parentForm, "生成"); } break; case WindowMenuType.DatabaseCommand: { ProgressAsyncHelper asyncHelper = new ProgressAsyncHelper( new Feng.Async.AsyncHelper.DoWork(delegate() { Feng.Data.DbHelper.Instance.ExecuteNonQuery(info.ExecuteParam); return null; }), new Feng.Async.AsyncHelper.WorkDone(delegate(object result) { }), parentForm, "执行"); } break; case WindowMenuType.DatabaseCommandMulti: { StringBuilder sb = new StringBuilder(); for (int i = 0; i < dm.Count; ++i) { string s = EntityHelper.ReplaceEntity(info.ExecuteParam, dm.Items[i]); sb.Append(s); sb.Append(System.Environment.NewLine); } ProgressAsyncHelper asyncHelper = new ProgressAsyncHelper( new Feng.Async.AsyncHelper.DoWork(delegate() { Feng.Data.DbHelper.Instance.ExecuteNonQuery(sb.ToString()); return null; }), new Feng.Async.AsyncHelper.WorkDone(delegate(object result) { }), parentForm, "执行"); } break; case WindowMenuType.DatabaseCommandMultiParam: { object[] entities = new object[dm.Count]; for (int i = 0; i < dm.Count; ++i) { entities[i] = dm.Items[i]; } string s = EntityHelper.ReplaceEntities(info.ExecuteParam, entities, '\''); ProgressAsyncHelper asyncHelper = new ProgressAsyncHelper( new Feng.Async.AsyncHelper.DoWork(delegate() { Feng.Data.DbHelper.Instance.ExecuteNonQuery(s); return null; }), new Feng.Async.AsyncHelper.WorkDone(delegate(object result) { }), parentForm, "执行"); } break; case WindowMenuType.Process: { ProcessInfoHelper.ExecuteProcess(info.ExecuteParam, new Dictionary<string, object> { { "masterForm", parentForm } }); } break; case WindowMenuType.Action: { ServiceProvider.GetService<IApplication>().ExecuteAction(info.ExecuteParam); } break; default: return false; } return true; }
public static bool InternalExecuteWindowMenu(IDisplayManager dm, WindowMenuInfo info, Form parentForm) { object entity = dm.CurrentItem; int pos = dm.Position; //ArchiveOperationForm opForm = masterForm as ArchiveOperationForm; switch (info.Type) { case WindowMenuType.ReportSingle: { if (entity == null) { MessageForm.ShowError("请选择要打印的项!"); break; } ProgressAsyncHelper asyncHelper = new ProgressAsyncHelper( new Feng.Async.AsyncHelper.DoWork(delegate() { MyReportForm form = new MyReportForm(info.ExecuteParam); form.FillDataSet(entity); return(form); }), new Feng.Async.AsyncHelper.WorkDone(delegate(object result) { if (result != null) { MyReportForm form = result as MyReportForm; form.Show(parentForm); } }), parentForm, "生成"); } break; case WindowMenuType.ReportMulti: { if (dm.Count == 0) { MessageForm.ShowError("请选择要打印的项!"); break; } object[] entities = new object[dm.Count]; for (int i = 0; i < entities.Length; ++i) { entities[i] = dm.Items[i]; } ProgressAsyncHelper asyncHelper = new ProgressAsyncHelper( new Feng.Async.AsyncHelper.DoWork(delegate() { MyReportForm form = new MyReportForm(info.ExecuteParam); form.FillDataSet(entities); return(form); }), new Feng.Async.AsyncHelper.WorkDone(delegate(object result) { if (result != null) { MyReportForm form = result as MyReportForm; form.Show(parentForm); } }), parentForm, "生成"); } break; case WindowMenuType.MsReportSingle: { if (entity == null) { MessageForm.ShowError("请选择要打印的项!"); break; } ProgressAsyncHelper asyncHelper = new ProgressAsyncHelper( new Feng.Async.AsyncHelper.DoWork(delegate() { MsReportForm form = new MsReportForm(info.ExecuteParam); form.FillDataSet(entity); return(form); }), new Feng.Async.AsyncHelper.WorkDone(delegate(object result) { if (result != null) { MsReportForm form = result as MsReportForm; form.Show(parentForm); // 焦点会转变到其他程序,只能这样 form.FormClosed += new FormClosedEventHandler(delegate(object sender, FormClosedEventArgs e) { parentForm.ParentForm.Activate(); }); } }), parentForm, "生成"); } break; case WindowMenuType.MsReportMulti: { if (dm.Count == 0) { MessageForm.ShowError("请选择要打印的项!"); break; } object[] entities = new object[dm.Count]; for (int i = 0; i < entities.Length; ++i) { entities[i] = dm.Items[i]; } ProgressAsyncHelper asyncHelper = new ProgressAsyncHelper( new Feng.Async.AsyncHelper.DoWork(delegate() { MsReportForm form = new MsReportForm(info.ExecuteParam); form.FillDataSet(entities); return(form); }), new Feng.Async.AsyncHelper.WorkDone(delegate(object result) { if (result != null) { MsReportForm form = result as MsReportForm; form.Show(parentForm); form.FormClosed += new FormClosedEventHandler(delegate(object sender, FormClosedEventArgs e) { parentForm.ParentForm.Activate(); }); } }), parentForm, "生成"); } break; case WindowMenuType.DatabaseCommand: { ProgressAsyncHelper asyncHelper = new ProgressAsyncHelper( new Feng.Async.AsyncHelper.DoWork(delegate() { Feng.Data.DbHelper.Instance.ExecuteNonQuery(info.ExecuteParam); return(null); }), new Feng.Async.AsyncHelper.WorkDone(delegate(object result) { }), parentForm, "执行"); } break; case WindowMenuType.DatabaseCommandMulti: { StringBuilder sb = new StringBuilder(); for (int i = 0; i < dm.Count; ++i) { string s = EntityHelper.ReplaceEntity(info.ExecuteParam, dm.Items[i]); sb.Append(s); sb.Append(System.Environment.NewLine); } ProgressAsyncHelper asyncHelper = new ProgressAsyncHelper( new Feng.Async.AsyncHelper.DoWork(delegate() { Feng.Data.DbHelper.Instance.ExecuteNonQuery(sb.ToString()); return(null); }), new Feng.Async.AsyncHelper.WorkDone(delegate(object result) { }), parentForm, "执行"); } break; case WindowMenuType.DatabaseCommandMultiParam: { object[] entities = new object[dm.Count]; for (int i = 0; i < dm.Count; ++i) { entities[i] = dm.Items[i]; } string s = EntityHelper.ReplaceEntities(info.ExecuteParam, entities, '\''); ProgressAsyncHelper asyncHelper = new ProgressAsyncHelper( new Feng.Async.AsyncHelper.DoWork(delegate() { Feng.Data.DbHelper.Instance.ExecuteNonQuery(s); return(null); }), new Feng.Async.AsyncHelper.WorkDone(delegate(object result) { }), parentForm, "执行"); } break; case WindowMenuType.Process: { ProcessInfoHelper.ExecuteProcess(info.ExecuteParam, new Dictionary <string, object> { { "masterForm", parentForm } }); } break; case WindowMenuType.Action: { ServiceProvider.GetService <IApplication>().ExecuteAction(info.ExecuteParam); } break; default: return(false); } return(true); }