fabiofabio60 (Normal User)
Newbie
Messaggi: 5
Iscritto: 02/11/2017
|
Salve a tutti. Sono nuovo del forum, e da un pò di tempo che mi diletto a programmare in c#.
Ora ho un problema che non riesco a risolvere, ho creato delle label dinamicamente nel TableLayoutPanel, ma nel form non riesco ad individuarle per cambiare il colore.
Grazie antcipatamente per l'aiuto.
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6388
Iscritto: 03/01/2010
|
Se le crei dinamicamente, come puoi individuarle nel form ?
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
fabiofabio60 (Normal User)
Newbie
Messaggi: 5
Iscritto: 02/11/2017
|
Sempre nel pannel ho creato altri ogetti tipo CHECK BOX ed altri PANEL, e li trovo nel form. Perchè con le label non ci riesco.
Come posso fare?
Grazie per l'aiuto.
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6388
Iscritto: 03/01/2010
|
Hai creato dinamicamente anche quelli?
Hai creato tutti questi controlli da codice? O no?
Non si capisce.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
fabiofabio60 (Normal User)
Newbie
Messaggi: 5
Iscritto: 02/11/2017
|
Ciao, scusa del risponderti in ritardo. Comunque vado a spiergarti quello che ho fatto. Ho inserito nel form un oggetto di nome tabbella, e dentro alla tabella ho creato dinamicamente i pannelli con dentro a sua volta delle label e checkBoxPCB,.
Quest'ultimo oggetto nel form tramite la funzione click riesco a capire quale checkBoxPCB ho premuto, ma le label non riesco a cambiargli il colore.
Grazie
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6388
Iscritto: 03/01/2010
|
Ci fai vedere il codice, perché forse non ci capiamo su cosa vuol dire "creare dinamicamente".
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
fabiofabio60 (Normal User)
Newbie
Messaggi: 5
Iscritto: 02/11/2017
|
Buongiorno sottostante il codice che ho creato:
Codice sorgente - presumibilmente C++ |
// Funzione chiamata solo allo start per creare dinamicamente più pannelli che possono cambiare di numero e dentro ai pannelli le CheckBox con le Label private void CreaPannelli() { for (int j = 0; j < max_yP; j += 1) { tabella.RowStyles.Add(new RowStyle(SizeType.Percent, 100 / max_y)); for (int i = 0; i < max_xP; i += 1) { // Creo dinamicamente nella Tabella più Pannelli FlowLayoutPanel pannello = new FlowLayoutPanel(); pannello.FlowDirection = FlowDirection.TopDown; pannello.Margin = new Padding(1); pannello.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; pannello.Name = String.Format("pannello_{0}"); pannello.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top; pannello.Click += pannello_Click; // Creo dinamicamente nei pannelli più CheckBox CheckBox checkBoxP = new CheckBox(); checkBoxP.Tag = npcb.ToString(); checkBoxP.Text = "N. Pannello"; checkBoxP.AutoSize = true; checkBoxP.Checked = true; pannello.Controls.Add(checkBoxPCB); checkBoxP.CheckedChanged += checkBoxP_click; // Creo dinamicamente nei pannelli più Label Label Label1 = new Label() Label1.Text = "Label1"; pannello.Controls.Add(Label1); Label Label2 = new Label(); Label2.Text = "Label2"; pannello.Controls.Add(Label2); Label Label3 = new Label(); Label3.Text = "Label3"; pannello.Controls.Add(Label3); tabella.Controls.Add(pannello, i, y); } } } //Nella funzione sottostante cambio il colore a tutte le label del pannello, ma non riesco a cambiare il colore alla singola label. private void CambiaColoreLabel() { var control = tabella.Controls[statoWorkPcb]; FlowLayoutPanel Label = (FlowLayoutPanel)control; Label.ForeColor = System.Drawing.Color.Red; }
|
Grazie ancora per l'aiuto.
Ultima modifica effettuata da Thejuster il 09/11/2017 alle 12:36 |
|
Thejuster (Admin)
Guru^2
Messaggi: 2299
Iscritto: 04/05/2008
|
Per prima cosa, dai un nome ad ogni label. Così sai quale devi cambiare colore.
Non serve scrivere o assegnare un nome alla variabile ma devi darlo al controllo.
Codice sorgente - presumibilmente Plain Text |
Label.name = "Label" + Controls.Count();
|
Cmq, non si è capitato che vuoi fare. Scrivere richieste criptate non è di aiuto a chi tenta di darti una mano. Cambiare colore quando? Quando clicchi sulla label?, sul check box? Dove? Ho la soluzione al tuo problema, ma senza sapere quando e dove vuoi cambiare il colore non riesco proprio ad aiutarti. Ma provo ad indovinare, può darsi che azzecco...
Codice sorgente - presumibilmente C# / VB.NET |
Label lb = new Label(); lb.Text = "Label" + pannello.Controls.Count(); lb.name = "label" + pannello.Controls.Count(); lb.click = CambiaColoreLabel; pannello.controls.add(lb); private void CambiaColoreLabel(object sender,EventArgs e) { ((Label)sender).BackColor = Color.Red; }
|
Per ricercare invece velocemente una label, evita quell'orrore di ciclo.
Codice sorgente - presumibilmente C# / VB.NET |
IEnumerbale<Control> c = pannello.Controls.Cast<Control>(); Label lb = (Label)c.Where(x => (x.GetType() == typeof(Label)) && (x.Name == "Label1")).FirstOrDefault(); lb.Text = "Cambio nome alla label1 esempio";
|
etc..
Spero di averti aiutato, ma la prossima volta scrivi dettagliatamente il tuo problema.
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6388
Iscritto: 03/01/2010
|
In effetti se scrivi
" ho creato altri ogetti tipo CHECK BOX ed altri PANEL, e li trovo nel form "
come si può capire qualcosa?
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|