private void AddComponent(BaseComponent component, Point location) { try { //Sets the component as a specific component, depending on the ComponentType of component. switch (component.ComponentType) { case ComponentType.Resistor: component = new Resistor(component.Direction, component.Resistance, component.Voltage, component.Current); break; case ComponentType.Voltmeter: component = new Voltmeter(component.Direction, component.Resistance, component.Voltage, component.Current); break; case ComponentType.Ammeter: component = new Ammeter(component.Direction, component.Resistance, component.Voltage, component.Current); break; case ComponentType.Cell: component = new Cell(component.Direction, component.Resistance, component.Voltage, component.Current); break; case ComponentType.WireStraight: component = new Wire(component.Direction, component.Resistance, component.Voltage, component.Current); break; case ComponentType.WireTwoAlternate: component = new WireTwoWayAlt(component.Direction, component.Resistance, component.Voltage, component.Current); break; case ComponentType.WireThreeWay: component = new WireThreeWay(component.Direction, component.Resistance, component.Voltage, component.Current); break; case ComponentType.WireFourWay: component = new WireFourWay(component.Direction, component.Resistance, component.Voltage, component.Current); break; default: throw new ArgumentNullException(); } } catch (Exception ex) { MessageBox.Show(ex.Message); return; } component.Location = location; var pictureBox = new PictureBox { Location = location, BackColor = Color.Transparent, SizeMode = PictureBoxSizeMode.AutoSize, Tag = component.ID }; //Events. pictureBox.MouseMove += p_MouseMove; pictureBox.MouseClick += P_MouseClick; pictureBox.MouseWheel += P_MouseWheel; pictureBox.MouseHover += P_MouseHover; pictureBox.Image = component.CurrentImage; Components.Add(component); //Adds the component to the main panel panelCircuitBoard.Controls.Add(pictureBox); }
private void AddComponent(ComponentType componentType, int posX, int posY, ComponentDirection direction = ComponentDirection.Right, double resistance = 0, double voltage = 0, double current = 0) { //Ensures that the PictureBox that is to be created will be on a square. posX = RoundDownToNearest(posX, 50); posY = RoundDownToNearest(posY, 50); BaseComponent component; try { //Sets the component as a specific component, depending on the ComponentType the method receives. switch (componentType) { case ComponentType.Resistor: component = new Resistor(direction, resistance, current, voltage); break; case ComponentType.Voltmeter: component = new Voltmeter(direction, resistance, current, voltage); break; case ComponentType.Ammeter: component = new Ammeter(direction, resistance, current, voltage); break; case ComponentType.Cell: component = new Cell(direction, resistance, current, voltage); break; case ComponentType.WireStraight: component = new Wire(direction, resistance, current, voltage); break; case ComponentType.WireTwoAlternate: component = new WireTwoWayAlt(direction, resistance, current, voltage); break; case ComponentType.WireThreeWay: component = new WireThreeWay(direction, resistance, current, voltage); break; case ComponentType.WireFourWay: component = new WireFourWay(direction, resistance, current, voltage); break; default: throw new ArgumentNullException(); } } catch (Exception ex) { MessageBox.Show(ex.Message); return; } //Sets the location of component. component.Location = Location; var pictureBox = new PictureBox { Tag = component.ID, //Sets the location of the PictureBox. Location = new Point(posX, posY), BackColor = Color.Transparent, SizeMode = PictureBoxSizeMode.AutoSize }; //Events. pictureBox.MouseMove += p_MouseMove; pictureBox.MouseClick += P_MouseClick; pictureBox.MouseWheel += P_MouseWheel; pictureBox.MouseHover += P_MouseHover; pictureBox.Image = component.CurrentImage; Components.Add(component); //Adds the component to the main panel. panelCircuitBoard.Controls.Add(pictureBox); }