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 - Array di controlli...come si fanno??
Forum - C# / VB.NET - Array di controlli...come si fanno??

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
dartraf (Normal User)
Pro


Messaggi: 71
Iscritto: 15/12/2005

Segnala al moderatore
Postato alle 12:51
Sabato, 18/10/2008
Questo topic è stato chiuso dal moderatore

Ciao a tutti
da poco ho incominciato ad utilizzare VB .net venendo da VB 6.
In VB 6 utilizzavo spesso i vettori di controlli per gestire tutti i controlli simili in un unico gestore degli eventi e lì selezionare l'operazione da fare

Codice sorgente - presumibilmente VB.NET

  1. Private Sub Command1_Click(Index As Integer)
  2.     Select Case Index
  3.         Case 0
  4.             ' operazione 0
  5.         Case 1
  6.             ' operazione 1
  7.         Case 2
  8.             ' operazione 2
  9.     End Select
  10. End Sub



Ho notato che in VB .net non esiste questa funzione.
Come faccio ad implementare un qualcosa del genere???
Help me!

PM
Avatar
fabi3194 (Ex-Member)
Expert


Messaggi: 206
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 14:01
Sabato, 18/10/2008

PM
Avatar
dartraf (Normal User)
Pro


Messaggi: 71
Iscritto: 15/12/2005

Segnala al moderatore
Postato alle 17:27
Sabato, 18/10/2008
Aspetta ma io non ho chiesto del costrutto select case.....
A me interessa realizzare vettori di oggetti (tipo commandbutton) per poi usarli in un solo gestore degli eventi.
In vb 6 ogni oggetto aveva la proprietà index per realizzare questo meccanismo.
Come si fa in vb .net??

PM
Avatar
dartraf (Normal User)
Pro


Messaggi: 71
Iscritto: 15/12/2005

Segnala al moderatore
Postato alle 17:38
Sabato, 18/10/2008
Forse ho trovato qlcs tra i download...
grazie.

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 17:39
Sabato, 18/10/2008
Forse ti riferisci alla mia classe per gestire le matrici di controlli.

PM
Avatar
TSP (Ex-Member)
Pro


Messaggi: 99
Iscritto: 17/03/2008

Segnala al moderatore
Postato alle 21:50
Venerdì, 24/10/2008
ho scritto una guida, è in c# ma è uguale:

Molti credono che nel linguaggio C# le matrici di controlli non esistano, navigando sul web ho potuto appurare quanto ho appena detto quindi procedero alla spiegazione di come creare una matrice di controlli:

1. aggiungiamo la seguente sitring nel file nomeform.designer.cs nel punto in cui troviamo moltre altre righe simili.
Codice sorgente
private System.Windows.Forms.TextBox[] TextBoxM;


2. Ora dobbiamo riservare uno spazio nella memoria alla nostra matrice.
Codice sorgente
TextBoxM = new System.Windows.Forms.TextBox[20]


2. per creare nuovi controlli con diverso indice ma uguale nome procediamo in questo modo.
Codice sorgente
TextBoxM[x] = new System.Windows.Forms.TextBox();

(x sta per il numero dell'indice)
da ricordare che non potremo aumentare i nostri controlli in modo da renderli superiori al limite precedentemente stabilito.
quindi
Codice sorgente
TextBoxM[21] = new System.Windows.Forms.TextBox();
non potrà esistere.

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 16:14
Domenica, 26/10/2008
Non vengono comunque visualizzate nel designer. Aggiungere quel codice è come aggiungere controlli a runtime.

PM
Avatar
dartraf (Normal User)
Pro


Messaggi: 71
Iscritto: 15/12/2005

Segnala al moderatore
Postato alle 11:32
Martedì, 28/10/2008
Hei io ho pensato ad una soluzione del genere:


Codice sorgente - presumibilmente VB.NET

  1. Public Class ArrayControl(Of C As {Control, New})
  2.     Inherits System.Collections.CollectionBase
  3.  
  4.  
  5.     ' form che ospita l'array di controlli
  6.     Private ReadOnly HostForm As System.Windows.Forms.Form
  7.  
  8.  
  9.     ' elenco degli eventi
  10.     Public Event m_Click(ByVal sender As Object, ByVal e As System.EventArgs)
  11.     ' ed altri
  12.  
  13.     ' costruttori
  14.     Public Sub New(ByVal host As System.Windows.Forms.Form)
  15.         HostForm = host
  16.     End Sub
  17.  
  18.     Public Sub New(ByVal host As System.Windows.Forms.Form, ByVal x As Single, ByVal y As Single)
  19.         Me.New(host)
  20.         Me.AddNewControl(x, y)
  21.     End Sub
  22.  
  23.  
  24.     ' proprieta di default
  25.     Default Public ReadOnly Property Item(ByVal Index As Integer) As C
  26.         Get
  27.             Return CType(Me.List.Item(Index), C)
  28.         End Get
  29.     End Property
  30.  
  31.  
  32.     ' metodi
  33.     Public Sub Remove(Optional ByVal index As Integer = -1)
  34.         If Me.Count > 0 Then
  35.             If index = -1 Then
  36.                 HostForm.Controls.Remove(Me(Me.Count - 1))
  37.                 Me.List.RemoveAt(Me.Count - 1)
  38.             Else
  39.                 HostForm.Controls.Remove(Me(index))
  40.                 Me.List.RemoveAt(index)
  41.             End If
  42.         End If
  43.     End Sub
  44.  
  45.     Private Sub AddEvent(ByVal controllo As C)
  46.         AddHandler controllo.Click, AddressOf ClickHandler
  47. end sub
  48.  
  49.     Public Function AddNewControl(ByVal x As Single, ByVal y As Single, Optional ByVal visibile As Boolean = True) As C
  50.         Dim controllo As New C
  51.  
  52.         Me.List.Add(controllo)
  53.         HostForm.Controls.Add(controllo)
  54.  
  55.         controllo.Top = y
  56.         controllo.Left = x
  57.         controllo.Visible = visibile
  58.         controllo.Tag = Me.Count - 1
  59.         controllo.Text = "Controllo " & Me.Count.ToString
  60.  
  61.         AddEvent(controllo)
  62.  
  63.         Return controllo
  64.     End Function
  65.  
  66.     Public Function AddNewControl(ByVal obj As C) As C
  67.         Me.List.Add(obj)
  68.         obj.Tag = Me.Count - 1
  69.         AddEvent(obj)
  70.         Return obj
  71.     End Function
  72.  
  73.  
  74.  
  75.     ' gestori degli eventi
  76.     Public Sub ClickHandler(ByVal sender As Object, ByVal e As System.EventArgs)
  77.         RaiseEvent m_Click(sender, e)
  78.     End Sub
  79.    
  80.     ' ed altri



Ditemi se è giusta

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 15:57
Martedì, 28/10/2008
Niente da dire, mi sembra tutto corretto.

PM
Pagine: [ 1 2 ] Precedente | Prossimo