public PointList(Form owner, Graph graph) : base(owner) { InitializeComponent(); _graph = graph; graph.ShowIntersectionsChanged += OnShowIntersectionsChanged; graph.ShowZerosChanged += OnShowZerosChanged; graph.IntersectionsCalculated += OnIntersectionsCalculated; graph.ZerosCalculated += OnZerosCalculated; _intersectionTab = new TabPage("Intersections"); _intersectionLv = new ListView { Font = Font, Dock = DockStyle.Fill, FullRowSelect = true, GridLines = true, View = View.Details, Columns = { "Intersecting Lines", "X", "Y" }, HeaderStyle = ColumnHeaderStyle.Nonclickable }; _intersectionLv.Columns[1].TextAlign = HorizontalAlignment.Right; _intersectionLv.Columns[2].TextAlign = HorizontalAlignment.Right; _intersectionLv.SetDoubleBuffered(true); _intersectionLv.ItemSelectionChanged += OnItemSelectionChanged; _intersectionTab.Controls.Add(_intersectionLv); _zeroTab = new TabPage("Zeros"); _zeroLv = new ListView { Font = Font, Dock = DockStyle.Fill, FullRowSelect = true, GridLines = true, View = View.Details, Columns = { "Line", "X" }, HeaderStyle = ColumnHeaderStyle.Nonclickable }; _zeroLv.Columns[1].TextAlign = HorizontalAlignment.Right; _zeroLv.SetDoubleBuffered(true); _zeroLv.ItemSelectionChanged += OnItemSelectionChanged; _zeroTab.Controls.Add(_zeroLv); }