private void VerticleContextMenu_Opening(object sender, CancelEventArgs e) { switch (wwClick) { case WhereWasClick.DrawingPanel: исправитьНаложениеВесовToolStripMenuItem.Visible = true; удалитьToolStripMenuItem.Visible = _selectedVerticle != null; break; case WhereWasClick.VertsList: исправитьНаложениеВесовToolStripMenuItem.Visible = false; удалитьToolStripMenuItem.Visible = _selectedVerticle != null; if (_selectedVerticle == null) { e.Cancel = true; } break; case WhereWasClick.EdgesList: e.Cancel = true; break; case WhereWasClick.No: e.Cancel = true; break; default: throw new ArgumentOutOfRangeException(); } wwClick = WhereWasClick.No; }
private void lb_edges_MouseDown(object sender, MouseEventArgs e) { wwClick = WhereWasClick.EdgesList; }
private void lb_verticle_MouseDown(object sender, MouseEventArgs e) { wwClick = WhereWasClick.VertsList; }
private void Drawing_panel_MouseDown(object sender, MouseEventArgs e) { if (lb_verticle.SelectedIndex != -1) { lb_verticle.SetSelected(lb_verticle.SelectedIndex, false); } if (lb_edges.SelectedIndex != -1) { lb_edges.SetSelected(lb_edges.SelectedIndex, false); } if (e.Button != MouseButtons.Left) { wwClick = WhereWasClick.DrawingPanel; return; } Verticle select = null; foreach (var verticle in listOfVerticles) { int dx = e.X - verticle.point.X, dy = e.Y - verticle.point.Y; if (!(Math.Sqrt(dx * dx + dy * dy) <= verticleRadius)) { continue; } select = verticle; break; } if (Equals(_selectedVerticle, select) || select == null) { if (_selectedVerticle != null) { _selectedVerticle.isSelected = false; _selectedVerticle = null; Drawing_panel.Invalidate(); } return; } if (_selectedVerticle == null) { _selectedVerticle = select; if (_selectedVerticle != null) { _selectedVerticle.isSelected = true; } Drawing_panel.Invalidate(); } else { if (listOfEdges.Any(ed => Equals(ed.A, select) && Equals(ed.B, _selectedVerticle) || Equals(ed.A, _selectedVerticle) && Equals(ed.B, select))) { return; } var aef = new AddEdgeForm { Verticles = listOfVerticles, Edges = listOfEdges, SetDefaultVerticles = true, Va = _selectedVerticle, Vb = select }; aef.ShowDialog(); if (aef.DialogResult != DialogResult.OK) { if (_selectedVerticle != null) { _selectedVerticle.isSelected = false; } _selectedVerticle.isSelected = false; _selectedVerticle = null; Drawing_panel.Invalidate(); return; } listOfEdges.Add(aef.Return); listOfVerticles.Find(x => x.Equals(aef.Return.A)).connections++; listOfVerticles.Find(x => x.Equals(aef.Return.B)).connections++; RandomizeWeightsPositions(listOfEdges); RenewLists(); if (_selectedVerticle != null) { _selectedVerticle.isSelected = false; } Drawing_panel.Refresh(); _selectedVerticle = null; } }