public void UpdateDataPoolRow() { if (InvokeRequired) { Invoke(new Action(UpdateDataPoolRow)); return; } if (null == _methodFlow) { return; } int mtdCount = _methodFlow.Count; List <string> ExistOutputIDs = new List <string>(); dgvDataPool.Rows.Clear(); for (int i = 0; i < mtdCount; i++) { JFMethodFlow.MethodItem mi = _methodFlow.GetItem(i); ///获取各Method对象的实时界面 IJFMethod mtd = mi.Value; ///更新数据池列表(内部) string[] outputNames = mi.Value.MethodOutputNames; if (null != outputNames) { foreach (string outname in outputNames) { DataGridViewRow row = new DataGridViewRow(); DataGridViewTextBoxCell cellName = new DataGridViewTextBoxCell(); string outputID = mi.OutputID(outname); cellName.Value = outputID; ExistOutputIDs.Add(outputID); row.Cells.Add(cellName); DataGridViewTextBoxCell cellValue = new DataGridViewTextBoxCell(); row.Cells.Add(cellValue); dgvDataPool.Rows.Add(row); } } } dgvOutterDataPool.Rows.Clear(); ///跟新外部数据池 string[] OutterAvailedDataIDs = _methodFlow.OutterAvailedIDs; if (null != OutterAvailedDataIDs) { foreach (string dataID in OutterAvailedDataIDs) { DataGridViewRow row = new DataGridViewRow(); DataGridViewTextBoxCell cellName = new DataGridViewTextBoxCell(); cellName.Value = dataID; ExistOutputIDs.Add(dataID); row.Cells.Add(cellName); DataGridViewTextBoxCell cellValue = new DataGridViewTextBoxCell(); row.Cells.Add(cellValue); dgvOutterDataPool.Rows.Add(row); } } }
void AdjustView() { gbIn.Controls.Clear(); gbOut.Controls.Clear(); IsBindEditting = false; if (null == methodItem) { gbIn.Height = 20; gbOut.Top = gbIn.Bottom + 1; gbOut.Height = 20; btBindEdit.Enabled = false; btUI.Enabled = false; lbMethodName.Text = "未设置"; Height = gbOut.Bottom + 1; return; } lbMethodName.Text = methodItem.Name; btBindEdit.Enabled = true; btUI.Enabled = true; string[] inParamNames = methodItem.Value.MethodInputNames; if (null == inParamNames || 0 == inParamNames.Length) { gbIn.Height = 20; } else //添加输入参数 { int locX = 3; int locY = 15; for (int i = 0; i < inParamNames.Length; i++) { TextBox tbInputName = new TextBox(); tbInputName.Location = new Point(locX, locY); tbInputName.Width = 90; tbInputName.ReadOnly = true; tbInputName.BackColor = SystemColors.Control; tbInputName.Text = inParamNames[i]; gbIn.Controls.Add(tbInputName); ComboBox cbInputID = new ComboBox(); cbInputID.Location = new Point(tbInputName.Right + 1, locY); cbInputID.Width = gbIn.Width - cbInputID.Left - 1; cbInputID.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;//cbInputID.Dock = DockStyle.Top | DockStyle.Left | DockStyle.Right; if (null != availableIDs && availableIDs.Length > 0) { cbInputID.Items.AddRange(availableIDs); } cbInputID.Text = methodItem.InputID(inParamNames[i]); cbInputID.SelectedIndexChanged += OnComboSelectIndexChanged_InputID; cbInputID.Enabled = false; gbIn.Controls.Add(cbInputID); cbInputIDs.Add(cbInputID); locY = tbInputName.Bottom + 1; } gbIn.Height = locY; } gbOut.Top = gbIn.Bottom + 1; string[] outParamNames = methodItem.Value.MethodOutputNames; if (null != outParamNames && outParamNames.Length > 0) { int locX = 3; int locY = 15; for (int i = 0; i < outParamNames.Length; i++) { TextBox tbOutputName = new TextBox(); tbOutputName.Location = new Point(locX, locY); tbOutputName.Width = 90; tbOutputName.ReadOnly = true; tbOutputName.BackColor = SystemColors.Control; tbOutputName.Text = outParamNames[i]; gbOut.Controls.Add(tbOutputName); TextBox tbOutputID = new TextBox(); tbOutputID.Location = new Point(tbOutputName.Right + 1, locY); tbOutputID.Width = gbIn.Width - tbOutputID.Left - 1; tbOutputID.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;//tbOutputID.Dock = DockStyle.Top | DockStyle.Left | DockStyle.Right; tbOutputID.Text = methodItem.OutputID(outParamNames[i]); tbOutputID.Enabled = false; gbOut.Controls.Add(tbOutputID); tbOutputIDs.Add(tbOutputID); locY = tbOutputID.Bottom + 1; } gbOut.Height = locY + 1; } Height = gbOut.Bottom + 1; }
/// <summary> /// 更新动作流面板和数据池面板 /// </summary> public void UpdateFlow2UI() { if (InvokeRequired) { Invoke(new Action(UpdateFlow2UI)); return; } pnFlow.Controls.Clear(); dgvDataPool.Rows.Clear(); dgvOutterDataPool.Rows.Clear(); _lstBtDel.Clear(); _lstBtAct.Clear(); _lstRtUi.Clear(); if (null == _methodFlow) { return; } int mtdCount = _methodFlow.Count; List <string> ExistOutputIDs = new List <string>(); //for (int i = 0; i < mtdCount; i++) // ExistOutputIDs.AddRange(_methodFlow.GetItem(i).OutputNameIDs.Values); int locX = 0, locY = 3; for (int i = 0; i < mtdCount; i++) { JFMethodFlow.MethodItem mi = _methodFlow.GetItem(i); ///获取各Method对象的实时界面 IJFMethod mtd = mi.Value; if (mtd is IJFRealtimeUIProvider) { _lstRtUi.Add((mtd as IJFRealtimeUIProvider).GetRealtimeUI()); } else { _lstRtUi.Add(null); } Label lbMiName = new Label(); //动作单元名称 lbMiName.Text = i + ":" + mi.Name; lbMiName.Location = new Point(locX, locY + 3); pnFlow.Controls.Add(lbMiName); Button btDel = new Button(); Button btAct = new Button(); btAct.Text = "执行"; btAct.Width = 37; btAct.Location = new Point(270 - btAct.Width, locY);//270为UcMethodNode对象的宽度 btAct.Click += OnButtonClick_MethodItemAction; _lstBtAct.Add(btAct); pnFlow.Controls.Add(btAct); btDel.Text = "删除"; btDel.Width = 37; btDel.Location = new Point(btAct.Left - btDel.Width - 10, locY);//270为UcMethodNode对象的宽度 btDel.Click += OnButtonClick_DelMethodItem; _lstBtDel.Add(btDel); pnFlow.Controls.Add(btDel); locY = btDel.Bottom + 2; UcMethodNode mn = new UcMethodNode(); mn.SetMethodItem(mi); mn.EventShowInfo += ShowMethodItemInfo; mn.Location = new Point(locX, locY); pnFlow.Controls.Add(mn); mn.UpdateAvailableIDs(_methodFlow.UnexportIDs);//(mi.AvailedInputIDs/*allOutputID.ToArray()*/); locY = mn.Bottom + 2; ///更新数据池列表(内部) string[] outputNames = mi.Value.MethodOutputNames; if (null != outputNames) { foreach (string outname in outputNames) { DataGridViewRow row = new DataGridViewRow(); DataGridViewTextBoxCell cellName = new DataGridViewTextBoxCell(); string outputID = mi.OutputID(outname); cellName.Value = outputID; ExistOutputIDs.Add(outputID); row.Cells.Add(cellName); DataGridViewTextBoxCell cellValue = new DataGridViewTextBoxCell(); row.Cells.Add(cellValue); dgvDataPool.Rows.Add(row); } } } foreach (string key in _methodFlow.DataPool.Keys) //更新数据池中的其他变量(不是算子的输出) { if (!ExistOutputIDs.Contains(key)) { DataGridViewRow row = new DataGridViewRow(); DataGridViewTextBoxCell cellName = new DataGridViewTextBoxCell(); cellName.Value = key; ExistOutputIDs.Add(key); row.Cells.Add(cellName); DataGridViewTextBoxCell cellValue = new DataGridViewTextBoxCell(); row.Cells.Add(cellValue); dgvDataPool.Rows.Add(row); } } ///跟新外部数据池 string[] OutterAvailedDataIDs = _methodFlow.OutterAvailedIDs; if (null != OutterAvailedDataIDs) { foreach (string dataID in OutterAvailedDataIDs) { DataGridViewRow row = new DataGridViewRow(); DataGridViewTextBoxCell cellName = new DataGridViewTextBoxCell(); cellName.Value = dataID; ExistOutputIDs.Add(dataID); row.Cells.Add(cellName); DataGridViewTextBoxCell cellValue = new DataGridViewTextBoxCell(); row.Cells.Add(cellValue); dgvOutterDataPool.Rows.Add(row); } } UpdatePoolValues(); }