14/03/17 8:46
Sevenjeak
Salve,
Sto creando, il questi giorni, un controllo posizionato nella parte superiore, simulando una toolbar, contenente dentro dei panelli, simulando delle colonne.
So che per fare una struttura a colonne potrei utilizzare il TableLayoutPane, ma avrei la necessità di far inserire più elementi in ogni colonna, cosa che questo controllo non fa.
Fino ad ora il codice del componente è questo:
Creato e aggiunto nel form in questo modo:
Il costruttore, dichiarato cosi, dovrebbe creare una toolbar con tre colonne, posizionando le tre colonne in modo che occupino tutte e tre lo stesso spazio, ma sè, nel costruttore, aggiungevo altri tre parametri questi ultimi deferiranno la dimensione in percentuale occupata dalle colonne.
I problemi sono che:
1) Non mi vengono aggiunte più di due colonne, eppure controllando la lunghezza dell'array corrisponde al numero di elementi ( colonne ) che voglio, come mai ciò?
2) In ogni caso, la dimensione delle colonne non è corretta, sbaglio qualche calcolo, se se come dovrà essere?
Sto creando, il questi giorni, un controllo posizionato nella parte superiore, simulando una toolbar, contenente dentro dei panelli, simulando delle colonne.
So che per fare una struttura a colonne potrei utilizzare il TableLayoutPane, ma avrei la necessità di far inserire più elementi in ogni colonna, cosa che questo controllo non fa.
Fino ad ora il codice del componente è questo:
public class xComponent : ContainerControl private List<Panel> columns = null; private BorderStyle columnsBorderStyle = BorderStyle.None; public BorderStyle ColumnsBorderStyle { get { return columnsBorderStyle; }set { columns.ForEach(delegate (Panel element) { element.BorderStyle = value; }); columnsBorderStyle = value; } } public xComponent(int num_columns, params int[] percentSize) { Dock = DockStyle.Top; BackColor = Color.FromArgb(230, 230, 230); Size = new Size(968, 30); columns = new List<Panel>(); // Add columns into the control for (int i = 0; i < num_columns; i++) { columns.Add(new Panel()); columns[i].Height = Height; Controls.Add(columns[i]); } positionColumns(num_columns, percentSize); } public Panel Column(int index) { return columns[index]; } private void positionColumns(int num_columns, int[] percentSize) { for (int i = 0; i < num_columns; i++) { columns[i].Left = (i > 0) ? columns[i - 1].Width : 0; columns[i].Width = (percentSize.Length == 0) ? Width / num_columns : (Width * percentSize[i]) / 100; } } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); } }
Creato e aggiunto nel form in questo modo:
xComponent xc = new xComponent(3); xc.ColumnsBorderStyle = BorderStyle.FixedSingle; Controls.Add(xc);
Il costruttore, dichiarato cosi, dovrebbe creare una toolbar con tre colonne, posizionando le tre colonne in modo che occupino tutte e tre lo stesso spazio, ma sè, nel costruttore, aggiungevo altri tre parametri questi ultimi deferiranno la dimensione in percentuale occupata dalle colonne.
I problemi sono che:
1) Non mi vengono aggiunte più di due colonne, eppure controllando la lunghezza dell'array corrisponde al numero di elementi ( colonne ) che voglio, come mai ciò?
2) In ogni caso, la dimensione delle colonne non è corretta, sbaglio qualche calcolo, se se come dovrà essere?
Ultima modifica effettuata da Sevenjeak 14/03/17 8:48
aaa