public void init(Pol pol) { // Najpre izbaci sve kontrole koje su dodate u prethodnom pozivu funkcije init, osim prve. List<Control> controls = new List<Control>(); foreach (Control c in this.Controls) { controls.Add(c); } foreach (Control c in controls) { SpravaGridUserControl c2 = c as SpravaGridUserControl; if (c2 != null && c2 != spravaGridUserControl1) this.Controls.Remove(c2); } Sprava[] sprave = Sprave.getSprave(pol); int width = spravaGridUserControl1.Width; int height = spravaGridUserControl1.Height; int xOffset = 50; int yOffset = 25; this.Width = 2 * width + xOffset; int brojSprava = sprave.Length; this.Height = (brojSprava / 2) * height + (brojSprava / 2 - 1) * yOffset; int tabIndex = spravaGridUserControl1.TabIndex; for (int i = 0; i < brojSprava; i++) { Sprava sprava = sprave[i]; if (i == 0) { // Za svaki slucaj najpre uklanjam event handlere (za slucaj da je metod init vec pozivan), // mada predpostavljam da cak i da se operacija += pozove dvaput uzastopce sa istim handlerom // da ce samo jedan handler biti dodat. spravaGridUserControl1.SpravaGridMouseDown -= new EventHandler<SpravaGridMouseDownEventArgs>(spravaGrid_MouseDown); spravaGridUserControl1.SpravaGridMouseUp -= new EventHandler<SpravaGridMouseUpEventArgs>(spravaGrid_MouseUp); spravaGridUserControl1.SpravaGridMouseDown += new EventHandler<SpravaGridMouseDownEventArgs>(spravaGrid_MouseDown); spravaGridUserControl1.SpravaGridMouseUp += new EventHandler<SpravaGridMouseUpEventArgs>(spravaGrid_MouseUp); spravaGridUserControl1.init(sprava); continue; } int row = i / 2; int col = i % 2; SpravaGridUserControl userControl = new SpravaGridUserControl(); userControl.Location = new Point(col * (width + xOffset), row * (height + yOffset)); userControl.Size = new Size(width, height); userControl.TabIndex = tabIndex + i; userControl.SpravaGridMouseDown += new EventHandler<SpravaGridMouseDownEventArgs>(spravaGrid_MouseDown); userControl.SpravaGridMouseUp += new EventHandler<SpravaGridMouseUpEventArgs>(spravaGrid_MouseUp); userControl.init(sprava); this.Controls.Add(userControl); } }
public void init(Sprava[] sprave) { // Najpre izbaci sve kontrole koje su dodate u prethodnom pozivu funkcije init, osim prve. List <Control> controls = new List <Control>(); foreach (Control c in this.Controls) { controls.Add(c); } foreach (Control c in controls) { SpravaGridUserControl c2 = c as SpravaGridUserControl; if (c2 != null && c2 != spravaGridUserControl1) { this.Controls.Remove(c2); } } int width = spravaGridUserControl1.Width; int height = spravaGridUserControl1.Height; int xOffset = 50; int yOffset = 25; // xOffset i yOffset je razmak izmedju sprava. razmak pre prve sprave i posle poslednje sprave je nula. this.Width = 2 * width + xOffset; int brojSprava = sprave.Length; this.Height = ((brojSprava + 1) / 2) * height + ((brojSprava + 1) / 2 - 1) * yOffset; int tabIndex = spravaGridUserControl1.TabIndex; for (int i = 0; i < brojSprava; i++) { Sprava sprava = sprave[i]; if (i == 0) { // Za svaki slucaj najpre uklanjam event handlere (za slucaj da je metod init vec pozivan), // mada predpostavljam da cak i da se operacija += pozove dvaput uzastopce sa istim handlerom // da ce samo jedan handler biti dodat. spravaGridUserControl1.SpravaGridMouseDown -= new EventHandler <SpravaGridMouseDownEventArgs>(spravaGrid_MouseDown); spravaGridUserControl1.SpravaGridMouseUp -= new EventHandler <SpravaGridMouseUpEventArgs>(spravaGrid_MouseUp); spravaGridUserControl1.SpravaGridMouseDown += new EventHandler <SpravaGridMouseDownEventArgs>(spravaGrid_MouseDown); spravaGridUserControl1.SpravaGridMouseUp += new EventHandler <SpravaGridMouseUpEventArgs>(spravaGrid_MouseUp); spravaGridUserControl1.init(sprava); continue; } int row = i / 2; int col = i % 2; SpravaGridUserControl userControl = new SpravaGridUserControl(); userControl.Location = new Point(col * (width + xOffset), row * (height + yOffset)); userControl.Size = new Size(width, height); userControl.TabIndex = tabIndex + i; userControl.SpravaGridMouseDown += new EventHandler <SpravaGridMouseDownEventArgs>(spravaGrid_MouseDown); userControl.SpravaGridMouseUp += new EventHandler <SpravaGridMouseUpEventArgs>(spravaGrid_MouseUp); userControl.init(sprava); this.Controls.Add(userControl); } }