//计时器,多线程执行全选宏操作 private void timer1_Tick(object sender, EventArgs e) { try { if (((Timer)sender).Tag.ToString() == "全选") { timer1.Stop(); ObjectsInView = NXFun.GetSelectObjects(); NXFun.RemoveAllSelect(); timer1.Interval = 1000; timer1.Tag = "取消全选"; timer1.Start(); } else if (((Timer)sender).Tag.ToString() == "取消全选") { timer1.Stop(); //遍历尺寸 List <NXOpen.Annotations.Dimension> dims = NXFun.GetDimensionInCurrentView(ObjectsInView); List <NXOpen.Annotations.BaseFcf> fcfs = NXFun.GetBaseFcfInCurrentView(ObjectsInView); LabelDimMap.Clear(); foreach (NXOpen.Annotations.Dimension dim in dims) { DimInfor diminfor = NXFun.GetDimInfor(dim); //存入Dictionary LabelDimMap.Add(diminfor.id, diminfor); } LabelFcfMap.Clear(); foreach (NXOpen.Annotations.BaseFcf fcf in fcfs) { DimInfor diminfor = NXFun.GetFcfInfor(fcf); LabelFcfMap.Add(diminfor.id, diminfor); } //转存到 LabelDimList LabelDimList.Clear(); foreach (int k in LabelDimMap.Keys) { foreach (DimInfor diminfor in LabelDimMap[k]) { LabelDimList.Add(diminfor); } } //转存到 LabelFcfList LabelFcfList.Clear(); foreach (int k in LabelFcfMap.Keys) { foreach (DimInfor diminfor in LabelFcfMap[k]) { LabelFcfList.Add(diminfor); } } //刷新显示 RefreshDisplay(); SetStatusLabel("查询结束!", 2); } } catch (System.Exception ex) { NXFun.MessageBox(ex.Message); } }
//刷新dgv private void RefreshDisplay() { try { tsrbtnSearch.Visible = !IsEdit; tsrbtnOk.Visible = IsEdit; tsrbtnCancel.Visible = IsEdit; bieluandong = true; dgvChicun.Rows.Clear(); for (int i = 0; i < LabelDimList.Count; i++) { string title = ""; if (LabelDimList[i].isLabel == "是") { title = (i + DimStartNum).ToString(); DimInfor temp = LabelDimList[i]; temp.id = i + DimStartNum; LabelDimList[i] = temp; } dgvChicun.Rows.Add(title); dgvChicun[1, i].Value = LabelDimList[i].text; dgvChicun[2, i].Value = LabelDimList[i].value; dgvChicun[3, i].Value = LabelDimList[i].up; dgvChicun[4, i].Value = LabelDimList[i].low; dgvChicun[5, i].Value = NXFun.string2bool(LabelDimList[i].isLabel); DataGridViewCheckBoxCell a = (DataGridViewCheckBoxCell)dgvChicun[5, i]; } dgvXingwei.Rows.Clear(); for (int i = 0; i < LabelFcfList.Count; i++) { string title = ""; if (LabelFcfList[i].isLabel == "是") { title = "J" + (i + FcfStartNum).ToString(); DimInfor temp = LabelFcfList[i]; temp.id = i + FcfStartNum; LabelFcfList[i] = temp; } dgvXingwei.Rows.Add(title); dgvXingwei[1, i].Value = LabelFcfList[i].text; dgvXingwei[2, i].Value = LabelFcfList[i].value; dgvXingwei[3, i].Value = NXFun.string2bool(LabelFcfList[i].isLabel); } bieluandong = false; } catch (System.Exception ex) { NXFun.MessageBox(ex.Message); } }
//形位打标checkbox private void dgvXingwei_CellValueChanged(object sender, DataGridViewCellEventArgs e) { if (bieluandong) { return; } if (e.ColumnIndex == 3) //标号 { int sel = e.RowIndex; //修改这项并移动 if ((bool)dgvXingwei[e.ColumnIndex, e.RowIndex].Value) { DimInfor temp = LabelFcfList[sel]; if (temp.isLabel == "是") { //本来就是 是 一般不会出现这种情况 } else { for (int i = sel; i >= 0; i--) { //移动到最末一个是的后面 if (LabelFcfList[i].isLabel == "是") { DimInfor temp1 = LabelFcfList[i + 1]; NXFun.Swap <DimInfor>(ref temp1, ref temp); temp1.isLabel = "是"; LabelFcfList[sel] = temp; LabelFcfList[i + 1] = temp1; RefreshDisplay(); //恢复选中 dgvXingwei.Rows[i + 1].Selected = true; break; } //没有 是 移动到顶 else if (i == 0 && LabelFcfList[i].isLabel == "否") { DimInfor temp1 = LabelFcfList[0]; NXFun.Swap <DimInfor>(ref temp1, ref temp); temp1.isLabel = "是"; LabelFcfList[sel] = temp; LabelFcfList[0] = temp1; RefreshDisplay(); //恢复选中 dgvXingwei.Rows[0].Selected = true; break; } } } } else { DimInfor temp = LabelFcfList[sel]; if (temp.isLabel == "否") { //本来就是 否 一般不会出现这种情况 } else { temp.isLabel = "否"; LabelFcfList.RemoveAt(sel); LabelFcfList.Add(temp); //移动到末 RefreshDisplay(); //恢复选中 dgvXingwei.Rows[LabelFcfList.Count - 1].Selected = true; } } } }
//上移 private void tsrbtnUp_Click(object sender, EventArgs e) { if (dgvChicun.SelectedRows.Count != 0) { //移动尺寸 int sel = dgvChicun.SelectedRows[0].Index; if (sel == 0) { SetStatusLabel("选中的是第一项 无法继续移动", 1); return; } else if (LabelDimList[sel].isLabel == "否") { SetStatusLabel("选中的是不打标的项,移动没有意义", 1); return; } else { //替换两项 DimInfor temp1 = LabelDimList[sel - 1]; DimInfor temp2 = LabelDimList[sel]; DimInfor temp3 = temp1; LabelDimList[sel - 1] = temp2; LabelDimList[sel] = temp1; RefreshDisplay(); //恢复选中 dgvChicun.Rows[sel - 1].Selected = true; SetStatusLabel("向上移动成功", 2); return; } } else if (dgvXingwei.SelectedRows.Count != 0) { //移动形位 int sel = dgvXingwei.SelectedRows[0].Index; if (sel == 0) { SetStatusLabel("选中的是第一项 无法继续移动", 1); return; } else if (LabelFcfList[sel].isLabel == "否") { SetStatusLabel("选中的是不打标的项,移动没有意义", 1); return; } else { //替换两项 DimInfor temp1 = LabelFcfList[sel - 1]; DimInfor temp2 = LabelFcfList[sel]; DimInfor temp3 = temp1; LabelFcfList[sel - 1] = temp2; LabelFcfList[sel] = temp1; RefreshDisplay(); //恢复选中 dgvXingwei.Rows[sel - 1].Selected = true; SetStatusLabel("向上移动成功", 2); return; } } else { SetStatusLabel("请选中尺寸或形位中某一行", 1); return; } }