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); } }
private void unesiOcenu(SpravaGridUserControl c, bool openedWithEnter) { DataGridViewSelectedRowCollection selRows = c.DataGridViewUserControl.DataGridView.SelectedRows; if (selRows.Count != 1) return; NastupNaSpravi nastup = selRows[0].DataBoundItem as NastupNaSpravi; Ocena ocena = null; GimnasticarUcesnik g = null; bool ok = false; try { DataAccessProviderFactory factory = new DataAccessProviderFactory(); dataContext = factory.GetDataContext(); dataContext.BeginTransaction(); g = nastup.Gimnasticar; ocena = findOcena(g, deoTakKod, c.Sprava); ok = true; } catch (Exception ex) { if (dataContext != null && dataContext.IsInTransaction) dataContext.Rollback(); MessageDialogs.showMessage( Strings.getFullDatabaseAccessExceptionMessage(ex), this.Text); } finally { if (dataContext != null) dataContext.Dispose(); dataContext = null; } if (!ok) { Close(); return; } Nullable<int> ocenaId = null; if (ocena != null) ocenaId = ocena.Id; OcenaForm f = new OcenaForm(ocenaId, g, c.Sprava, deoTakKod, takmicenje.Id); if (f.ShowDialog() == DialogResult.OK) { int index = c.DataGridViewUserControl.getSelectedItemIndex(); if (openedWithEnter) { // Enter ce automatski selektovati novu vrstu. Potrebno je samo proveriti da li je ovo poslednja vrsta. if (index == c.DataGridViewUserControl.DataGridView.Rows.Count - 1) { // uneta je zadnja ocena c.clearSelection(); } } else { ++index; if (index < c.DataGridViewUserControl.DataGridView.Rows.Count) { // selektuj sledecu ocenu c.DataGridViewUserControl.setSelectedItemIndex(index); } else { // uneta je zadnja ocena c.clearSelection(); } } } }
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); } }