Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Scelta tramite checkBox
Forum - C# / VB.NET - Scelta tramite checkBox - Pagina 5

Pagine: [ 1 2 3 4 5 ] Precedente | Prossimo
Avatar
Mikelius (Member)
Expert


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 16:51
Giovedì, 31/05/2018
Una semplice domanda:
nel caso abbia un panel, con dentro 5 groupBox, con dentro 1 checkBox ognuna?

forse faccio qualcosa di sbagliato, ma nei controlli all'interno del panel trovo solo le 5 groupBox, e non pure le checkBox (cioè non hanno la proprietà transitiva).
L'unica soluzione che mi sta funzionando è:

Codice sorgente - presumibilmente C#

  1. foreach (Control i in panel1.Controls)
  2.             {
  3.                 if (i is GroupBox ite)
  4.                 {
  5.                     foreach (Control item in ite.Controls)
  6.                     {
  7.                         if (item is CheckBox fileCheck)
  8.                         {



(se serve sto usando il framework 4.7.1)

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1316
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 2:10
Venerdì, 01/06/2018
Testo quotato

Postato originariamente da Mikelius:

Una semplice domanda:
nel caso abbia un panel, con dentro 5 groupBox, con dentro 1 checkBox ognuna?

forse faccio qualcosa di sbagliato, ma nei controlli all'interno del panel trovo solo le 5 groupBox, e non pure le checkBox (cioè non hanno la proprietà transitiva).
L'unica soluzione che mi sta funzionando è:

Codice sorgente - presumibilmente C#

  1. foreach (Control i in panel1.Controls)
  2.             {
  3.                 if (i is GroupBox ite)
  4.                 {
  5.                     foreach (Control item in ite.Controls)
  6.                     {
  7.                         if (item is CheckBox fileCheck)
  8.                         {



(se serve sto usando il framework 4.7.1)


Con l'enumerazione di Thejuster si potrebbe scrivere un codice che fa l'elenco di tutti i controlli presenti sul form e nei contenitori, e visualizzare il risultato "grezzo" ed enumerato.
Così una volta per tutte si capisce come agire in modo corretto sui controlli.

Ultima modifica effettuata da Carlo il 01/06/2018 alle 2:55


in programmazione tutto è permesso
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1316
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 16:00
Venerdì, 01/06/2018
Testo quotato

Postato originariamente da Mikelius:

Una semplice domanda:
nel caso abbia un panel, con dentro 5 groupBox, con dentro 1 checkBox ognuna?

forse faccio qualcosa di sbagliato, ma nei controlli all'interno del panel trovo solo le 5 groupBox, e non pure le checkBox (cioè non hanno la proprietà transitiva).
L'unica soluzione che mi sta funzionando è:

Codice sorgente - presumibilmente C#

  1. foreach (Control i in panel1.Controls)
  2.             {
  3.                 if (i is GroupBox ite)
  4.                 {
  5.                     foreach (Control item in ite.Controls)
  6.                     {
  7.                         if (item is CheckBox fileCheck)
  8.                         {



(se serve sto usando il framework 4.7.1)



Per salvare uno o più files in relazione ai checkBox vidimati non è più semplice interrogarli e basta?
Codice sorgente - presumibilmente C#

  1. private void Salva(string NomeFile)
  2.        {
  3.             // codice per aggiustare NomeFile
  4.             // aggiungento il percorso
  5.             // togliendo l'estensione
  6.  
  7.             if (checkBox1.Checked == true)
  8.             {
  9.                 string FileDaSalvare =  NomeFile + ".txt";
  10.                 // codice per salvare txt
  11.             }
  12.  
  13.             if (checkBox2.Checked == true)
  14.             {
  15.                 string FileDaSalvare = NomeFile + ".tex";
  16.                 // codice per salvare tex
  17.             }
  18.  
  19.             if (checkBox3.Checked == true)
  20.             {
  21.                 string FileDaSalvare = NomeFile + ".html";
  22.                 // codice per salvare html
  23.             }
  24.         }



senza foreach e preoccupazione se sono o non sono dentro ad un contenitore.
Troppi if ? tanto alla fine li devi sempre fare.

Ultima modifica effettuata da Carlo il 01/06/2018 alle 17:35


in programmazione tutto è permesso
PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2298
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 17:12
Venerdì, 01/06/2018
Testo quotato

Postato originariamente da Mikelius:

Una semplice domanda:
nel caso abbia un panel, con dentro 5 groupBox, con dentro 1 checkBox ognuna?

forse faccio qualcosa di sbagliato, ma nei controlli all'interno del panel trovo solo le 5 groupBox, e non pure le checkBox (cioè non hanno la proprietà transitiva).
L'unica soluzione che mi sta funzionando è:

Codice sorgente - presumibilmente C#

  1. foreach (Control i in panel1.Controls)
  2.             {
  3.                 if (i is GroupBox ite)
  4.                 {
  5.                     foreach (Control item in ite.Controls)
  6.                     {
  7.                         if (item is CheckBox fileCheck)
  8.                         {



(se serve sto usando il framework 4.7.1)






Puoi usare questa funzione


Codice sorgente - presumibilmente C#

  1. //Evento
  2.  List<Control> controlli = new List<Control>();
  3. CercaControlliDiTipo(typeof(CheckBox), this.panel1.Controls, ref controlli);
  4.  
  5.  
  6.  private void CercaControlliDiTipo(Type tipo, Control.ControlCollection ContenitorePrincipale, ref List<Control> controlli)
  7.         {
  8.             foreach (Control control in ContenitorePrincipale)
  9.             {
  10.                 if (control.GetType() == tipo)
  11.                     controlli.Add(control);
  12.                 if (control.Controls.Count > 0)
  13.                     CercaControlliDiTipo(tipo, control.Controls, ref controlli);
  14.             }
  15.         }




Gli indici ovviamente vanno in sequenza di inserimento o creazione.
Per ordinarli basta semplicemente

Codice sorgente - presumibilmente Plain Text

  1. controlli = controlli.OrderBy(x => x.Name).ToList<Control>();




https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Pagine: [ 1 2 3 4 5 ] Precedente | Prossimo