#region using System; using System.Collections.Generic; using System.Windows.Forms; using CSFrameworkV5.Business; using CSFrameworkV5.Common; using CSFrameworkV5.Core; using CSFrameworkV5.Library.CommonClass; using DevExpress.XtraEditors.Controls; #endregion namespace CSFrameworkV5.Library { /// /// 生成单据向导窗体 /// public partial class frmGenerateWizard : Form { private bool _GenSuccess; //生成数据是否成功的标志 private List _items; private frmGenerateWizard() { InitializeComponent(); } private IDocGenerateItem CurrentItem => _items[rgItems.SelectedIndex]; private void btnCancel_Click(object sender, EventArgs e) { Close(); } private void btnGen_Click(object sender, EventArgs e) { if (ValidateWizard()) { //查找目标窗体是否打开 var targetForm = MdiTools.FindForm(CurrentItem.TargetFormType.FullName); if (targetForm == null) //没有打开目标窗体,程序自动打开 { var mainForm = MdiTools .MainForm as IMdiForm; //MDI主窗体 targetForm = MdiTools.OpenChildForm(mainForm, CurrentItem.TargetFormType); //打开目标窗体 } else { if (!(targetForm is IBusinessSupportable)) { Msg.Warning("不支持生成目标窗体的数据!"); return; //不是MDI子窗体,退出 } if ((targetForm as IDataOperatable).DataChanged) { Msg.Warning("目标窗体 '" + CurrentItem.TargetFormName + "' 正在修改数据!请保存或取消修改后才能生成!"); return; } targetForm.Activate(); //目标窗体已打开,激活显示 } try { frmWaitingEx.ShowMe(this); //调用目标窗体的新增方法 (targetForm as IDataOperatable).DoAdd(null); //开始生成单据 _GenSuccess = CurrentItem.Generate((targetForm as frmBaseBusinessForm) .BLL); } finally { frmWaitingEx.HideMe(this); } if (_GenSuccess) { Msg.ShowInformation("生成单据成功,请修改相关数据然后保存!"); Close(); targetForm.Activate(); //显示目标窗体 } else { Msg.ShowError("生成单据失败!"); } } } public static void ExecuteWizard(List items) { var form = new frmGenerateWizard(); form.LoadItems(items); form.ShowDialog(); } private void LoadItems(List items) { _items = items; foreach (var item in items) rgItems.Properties.Items.Add( new RadioGroupItem("N", item.ItemCaption)); rgItems.Height = 30 * items.Count; if (items.Count > 0) rgItems.SelectedIndex = 0; } private void rgItems_SelectedIndexChanged(object sender, EventArgs e) { pnlDocNo.Visible = CurrentItem.IsDocNoRequired; if (pnlDocNo.Visible) textEdit1.Focus(); } private bool ValidateWizard() { //由其它单生成本单 if (CurrentItem.IsDocNoRequired) { if (textEdit1.Text == "") { Msg.Warning("请输入单据号码!"); textEdit1.Focus(); return false; } if (!CurrentItem.IsDocNoExists(textEdit1.Text)) { Msg.Warning("单据号码不存在!"); textEdit1.Focus(); return false; } CurrentItem.SetDocNo(textEdit1.Text); //设置单据号码 } return true; } } }