Oppure

Loading
02/11/17 21:37
fabiofabio60
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.
aaa
03/11/17 8:30
nessuno
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à.
03/11/17 21:50
fabiofabio60
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.
aaa
04/11/17 11:03
nessuno
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à.
05/11/17 15:07
fabiofabio60
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
aaa
05/11/17 16:32
nessuno
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à.
06/11/17 8:32
fabiofabio60
Buongiorno sottostante il codice che ho creato:


// 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 09/11/17 11:36
aaa
06/11/17 18:59
Thejuster

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.

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...




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.


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.

mire.forumfree.it/ - Mire Engine
C# UI Designer