⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainform.cs

📁 一个C#加上flowchart控件的例程
💻 CS
📖 第 1 页 / 共 4 页
字号:
			e.Graphics.DrawImage(bmp, rci, 1, 1, 26, 26,
				GraphicsUnit.Pixel);
			bmp.Dispose();
		}

		private void ConnectorList_OnMeasureItem(object sender, System.Windows.Forms.MeasureItemEventArgs e)
		{
			e.ItemHeight = 32;
		}

		private void ConnectorList_OnDrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
		{
			if(e.Index < 0)
				return;

			// Draw the item
			ListBox_DrawItem(_connectorList, e);

			if((e.State & DrawItemState.Selected) > 0)
				_hidden.BackColor = Color.LightYellow;
			else
				_hidden.BackColor = Color.White;

			// Draw the node
			Box b1, b2;
			Arrow a;
			_hidden.ClearAll();
			b1 = _hidden.CreateBox(-4, 1, 5, 24);
			b2 = _hidden.CreateBox(18, 1, 5, 24);
			a = _hidden.CreateArrow(b1, b2);
			b1.Visible = false;
			b2.Visible = false;
			a.ArrowHead = _connectors[e.Index].Head;

			Bitmap bmp = _hidden.CreateBmpFromChart();
			Rectangle rci = new Rectangle(e.Bounds.Left + 3,
				e.Bounds.Top + 4, 24, 24);
			e.Graphics.DrawImage(bmp, rci, 1, 1, 26, 26,
				GraphicsUnit.Pixel);
			bmp.Dispose();
		}

		private void ConnectorList_OnSelectionChanged(object sender, System.EventArgs e)
		{
			int si = _connectorList.SelectedIndex;
			if(si < 0 || si >= _connectors.Length)
				return;

			_flowChart.ArrowHead = _connectors[si].Head;
		}

		private void NodeList_OnMouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
		{
			DoDragDrop(new NodeDragItem(_nodeList.SelectedIndex),
				DragDropEffects.Copy);
		}

		private void FlowChart_OnDragOver(object sender, System.Windows.Forms.DragEventArgs e)
		{
			if(e.Data.GetDataPresent(NodeDragItem._GetType()))
			{
				e.Effect = DragDropEffects.Copy;
			}
			else
			{
				e.Effect = DragDropEffects.None;
			}
		}

		private void FlowChart_OnDrop(object sender, System.Windows.Forms.DragEventArgs e)
		{
			if(e.Data.GetDataPresent(NodeDragItem._GetType()))
			{
				NodeDragItem sdi = (NodeDragItem)e.Data.GetData(NodeDragItem._GetType());

				if(sdi.Index >= 0 && sdi.Index < _nodes.Length)
				{
					Point p = _flowChart.PointToClient(new Point(e.X, e.Y));
					PointF pt = _flowChart.ClientToDoc(new Point(p.X, p.Y));

					AnchorPattern ap = _nodes[sdi.Index].Anchor;
					foreach(AnchorPoint point in ap.Points)
					{
						point.MarkStyle = _anchorStyle;
						point.Color = _anchorColor;
					}

					Box b = _flowChart.CreateBox(pt.X, pt.Y, 20, 20);
					b.Style = EBoxStyle.bsComplex;
					b.ShapeTemplate = _nodes[sdi.Index].Template;
					b.AssignAnchorPattern(ap);
					b.SelStyle = ESelStyle.sstDashFrame;
				}
			}
		}

		private void FlowChart_OnBoxActivated(object sender, MindFusion.FlowChartX.BoxEventArgs e)
		{
			_selected = new NodeProps();
			_selected.Text = e.box.Text;
			_selected.Font = e.box.Font;
			_selected.FillColor = e.box.FillColor;

			_propertyGrid.SelectedObject = _selected;
		}

		private void FlowChart_OnBoxDeactivated(object sender, MindFusion.FlowChartX.BoxEventArgs e)
		{
			_propertyGrid.SelectedObject = null;
			_selected = null;
		}

		private void FlowChart_OnBoxClicked(object sender, MindFusion.FlowChartX.BoxMouseArgs e)
		{
			if(e.button != MouseButtons.Right)
				return;

			Point pt = _flowChart.DocToClient(
				new PointF(e.x + e.box.BoundingRect.Left,
				e.y + e.box.BoundingRect.Top));

            _contextMenu.Show(_flowChart, pt);
		}

		private void FlowChart_OnArrowClicked(object sender, MindFusion.FlowChartX.ArrowMouseArgs e)
		{
			if(e.button != MouseButtons.Right)
				return;

			Point pt = _flowChart.DocToClient(
				new PointF(e.x + e.arrow.BoundingRect.Left,
				e.y + e.arrow.BoundingRect.Top));

			_contextMenu.Show(_flowChart, pt);
		}

		private void OnPropertyValueChanged(object s, System.Windows.Forms.PropertyValueChangedEventArgs e)
		{
			if(_flowChart.Selection.Boxes.Count == 0)
				return;

			Box b = _flowChart.Selection.Boxes[0];
			if(b == null)
				return;

			// Create undo record
			MindFusion.FlowChartX.Commands.ChangeItemCmd cmd = 
				new MindFusion.FlowChartX.Commands.ChangeItemCmd(b, "Property change");

			b.Text = _selected.Text;
			b.Font = _selected.Font;
			b.FillColor = _selected.FillColor;

			cmd.Execute();
		}

		private void OnFileNew(object sender, System.EventArgs e)
		{
			_flowChart.ClearAll();
		}

		private void OnFileOpen(object sender, System.EventArgs e)
		{
			if(_openFileDialog.ShowDialog(this) == DialogResult.OK)
			{
				try
				{
					_flowChart.LoadFromFile(_openFileDialog.FileName);
				}
				catch
				{
					MessageBox.Show(this, "Failed to open document!");
				}
			}
		}

		private void OnFileSave(object sender, System.EventArgs e)
		{
			if(_saveFileDialog.ShowDialog(this) == DialogResult.OK)
			{
				_flowChart.SaveToFile(_saveFileDialog.FileName, true);
			}
		}

		private void OnPrintPreview(object sender, System.EventArgs e)
		{
			_flowChart.PrintOptions.DocumentName = "Flowchart";
			_flowChart.PrintOptions.EnableImages = false;
			_flowChart.PrintOptions.EnableInterior = true;
			_flowChart.PrintOptions.EnableShadows = true;
			_flowChart.PrintOptions.Scale = 100;
			_flowChart.PrintPreview();
		}

		private void OnPrint(object sender, System.EventArgs e)
		{
			_flowChart.PrintOptions.DocumentName = "Flowchart";
			_flowChart.PrintOptions.EnableImages = false;
			_flowChart.PrintOptions.EnableInterior = true;
			_flowChart.PrintOptions.EnableShadows = true;
			_flowChart.PrintOptions.Scale = 100;
			_flowChart.Print();
		}

		private void OnExit(object sender, System.EventArgs e)
		{
			this.Close();
		}

		private void OnAbout(object sender, System.EventArgs e)
		{
			AboutDialog dlg = new AboutDialog();

			dlg.ShowDialog(this);
		}

		private void ConnectorTypeCombo_OnSelectedValueChange(object sender, System.EventArgs e)
		{
			EArrowStyle ast = EArrowStyle.asPolyline;
			short segments = 1;

			switch(_connectorTypeCombo.SelectedIndex)
			{
				case 0:
					ast = EArrowStyle.asPolyline;
					break;
				case 1:
					ast = EArrowStyle.asBezier;
					break;
				case 2:
					ast = EArrowStyle.asPerpendicular;
					segments = 3;
					break;
			}

			_flowChart.ArrowStyle = ast;
			_flowChart.ArrowSegments = segments;
		}
		private void OnDelete(object sender, System.EventArgs e)
		{
			if(_flowChart.Selection.Boxes.Count > 0)
				_flowChart.DeleteObject(_flowChart.Selection.Boxes[0]);
			if(_flowChart.Selection.Arrows.Count > 0)
				_flowChart.DeleteObject(_flowChart.Selection.Arrows[0]);
		}
		#endregion



	
		
		private void OnOptions(object sender, System.EventArgs e)
		{
			OptionsDialog dlg = new OptionsDialog();

			dlg.ShowGrid = _flowChart.ShowGrid;
			dlg.BackgroundColor = _flowChart.BackColor;
			dlg.NodeColor = _flowChart.BoxFillColor;
			dlg.ConnectorColor = _flowChart.ArrowFillColor;
			dlg.AnchorColor = _anchorColor;

			dlg.ShowAnchors = _flowChart.ShowAnchors != EShowAnchors.saNever;
			switch(_anchorStyle)
			{
				case EMarkStyle.msCircle:
					dlg.AnchorStyle = 0;
					break;
				case EMarkStyle.msRect:
					dlg.AnchorStyle = 1;
					break;
				case EMarkStyle.msX:
					dlg.AnchorStyle = 2;
					break;
				default:
					dlg.AnchorStyle = 0;
					break;
			}

			if(dlg.ShowDialog(this) == DialogResult.OK)
			{
				_flowChart.ShowGrid = dlg.ShowGrid;
				_flowChart.BackColor = dlg.BackgroundColor;
				_flowChart.BoxFillColor = dlg.NodeColor;
				_flowChart.ArrowFillColor = dlg.ConnectorColor;
				_anchorColor = dlg.AnchorColor;

				_flowChart.ShowAnchors = dlg.ShowAnchors ?
					EShowAnchors.saAuto : EShowAnchors.saNever;
				switch(dlg.AnchorStyle)
				{
					case 0:
						_anchorStyle = EMarkStyle.msCircle;
						break;
					case 1:
						_anchorStyle = EMarkStyle.msRect;
						break;
					case 2:
						_anchorStyle = EMarkStyle.msX;
						break;
					default:
						_anchorStyle = EMarkStyle.msCircle;
						break;
				}
			}
		}

		private void OnEditPopup(object sender, System.EventArgs e)
		{
			if (_flowChart.UndoManager.History.NextUndo != null)
			{
				_menuUndo.Enabled = true;
				_menuUndo.Text = "Undo " + _flowChart.UndoManager.History.NextUndo.Title;
			}
			else
			{
				_menuUndo.Enabled = false;
				_menuUndo.Text = "Undo";
			}
			if (_flowChart.UndoManager.History.NextRedo != null)
			{
				_menuRedo.Enabled = true;
				_menuRedo.Text = "Redo " + _flowChart.UndoManager.History.NextRedo.Title;
			}
			else
			{
				_menuRedo.Enabled = false;
				_menuRedo.Text = "Redo";
			}
		}

		private void OnUndo(object sender, System.EventArgs e)
		{
			_flowChart.UndoManager.Undo();
		}

		private void OnRedo(object sender, System.EventArgs e)
		{
			_flowChart.UndoManager.Redo();
		}

		private void _rightPanel_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
		{
		
		}

		private void _flowChart_Click(object sender, System.EventArgs e)
		{
		
		}

	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -