/// <summary> /// 在当前搜索使用参数变量的的所有列的值,并且构建EnumDefine。 /// 不合法的Enum名字忽略。 /// 仅在 FromDefine 里面调用。 /// </summary> /// <param name="var"></param> public void BuildEnumFor(VarDefine var) { if (FormMain.Instance.Tabs.SelectedTab == null) { return; } var enumDefine = new EnumDefine(var.Parent, var.Name); DataGridView grid = (DataGridView)FormMain.Instance.Tabs.SelectedTab.Controls[0]; for (int i = 0; i < grid.ColumnCount; ++i) { if ((grid.Columns[i].Tag as ColumnTag).PathLast.Define == var) { for (int j = 0; j < grid.RowCount - 1; ++j) { var valueName = grid[i, j].Value as string; if (null == Tools.VerifyName(valueName, CheckNameType.CheckOnly)) { // 增加enum定义。 enumDefine.ChangeValueName(new EnumDefine.ValueDefine(enumDefine, "", -1), valueName); } } } } var.Parent.AddEnumDefine(enumDefine); InsertEnumDefine(define.RowCount, enumDefine.FullName(), enumDefine); }
/* * private void UpdateData(Document doc, VarDefine var, string newVarName) * { * HashSet<BeanDefine> deps = new HashSet<BeanDefine>(); * doc.BeanDefine.Depends(deps); * if (deps.Contains(var.Parent)) * { * GridData gridDataTmp = new GridData(doc); * doc.BeanDefine.BuildGridColumns(gridDataTmp, 0, new ColumnTag(ColumnTag.ETag.Normal), -1); * HashSet<Bean.VarData> varDatas = new HashSet<Bean.VarData>(); * var param = new Bean.UpdateParam() * { * UpdateType = Bean.EUpdate.CallAction, * UpdateAction = (GridData grid, int col, ColumnTag.VarInfo varInfo, Bean.VarData varData) => * { * if (varInfo.Define == var) * varDatas.Add(varData); * }, * }; * foreach (var bean in doc.Beans) * { * int insertIndex = gridDataTmp.RowCount; * gridDataTmp.InsertRow(insertIndex); * int colIndex = 0; * if (bean.Update(gridDataTmp, gridDataTmp.GetRow(insertIndex), ref colIndex, 0, param)) * break; * } * foreach (var varData in varDatas) * { * varData.Parent.RenameVar(varData.Name, newVarName); * } * } * } */ private void UpdateEnumDefine(EnumDefine enumDefine) { if (null == enumDefine) { return; } for (int i = 0; i < define.RowCount; ++i) { DataGridViewCellCollection cells = define.Rows[i].Cells; if (cells["BeanLocked"].Tag == enumDefine) { cells["VarName"].Value = enumDefine.FullName(); break; } } }