Controllo ComboBox per gli utenti di Visual Basic 6.0
Aggiornamento: novembre 2007
Il controllo ComboBox di Visual Basic 6.0 viene sostituito dal controllo ComboBox di Windows Form in Visual Basic 2008. I nomi di alcuni metodi, eventi, proprietà e costanti sono differenti e in certi casi esistono anche delle differenze di comportamento.
Differenze concettuali
Evento Change
In Visual Basic 6.0 l'evento Change del controllo ComboBox viene generato quando il testo del controllo viene modificato. L'evento Change non è generato quando si seleziona un elemento nell'elenco del controllo. A livello di codice, la modifica del testo di un elemento nell'elenco non genera l'evento Change.
In Visual Basic 2008 l'evento Change non esiste più; l'evento TextChanged viene generato ogni volta che il testo subisce modifiche per vari motivi, fra cui:
Quando si modifica la parte di inserimento testo
Quando si seleziona un elemento dall'elenco
Quando un elemento dell'elenco viene modificato a livello di codice
Quando si richiama il metodo AddItem
Proprietà ItemData
In Visual Basic 6.0 è possibile impostare la proprietà ItemData di un controllo ComboBox in fase di progettazione nella finestra Proprietà per associare un valore Integer a un elemento del controllo ComboBox.
La proprietà ItemData non esiste più in Visual Basic 2008. La libreria di compatibilità con Visual Basic (Microsoft.VisualBasic.Compatibility) contiene una funzione SetItemData che consente di associare un valore Integer a un elemento e una funzione GetItemData che consente di recuperare l'elemento.
Proprietà Locked
In Visual Basic 6.0 mediante la proprietà Locked di un controllo ComboBox si determina la possibilità di modificare la parte di casella di testo del controllo.
In Visual Basic 2008 la proprietà Locked evita che un controllo venga spostato in fase di progettazione. Pur non esistendo in Visual Basic 6.0 un equivalente diretto per il controllo Locked, è possibile ottenere lo stesso risultato impostando la proprietà DropDownStyle del controllo ComboBox su DropDownList.
Nota In Visual Basic 6.0 l'impostazione della proprietà Locked su True impedisce anche la modifica della selezione. Tale comportamento può essere riprodotto annullando la selezione nell'evento MouseDown.
Proprietà NewIndex
In Visual Basic 6.0 mediante la proprietà NewIndex era possibile recuperare l'indice dell'elemento aggiunto più di recente a un controllo ComboBox.
La proprietà NewIndex non esiste più in Visual Basic 2008. È possibile utilizzare il valore restituito dal metodo Item.Add per recuperare l'indice di un elemento quando viene aggiunto.
Proprietà TopIndex
In Visual Basic 6.0 si utilizza la proprietà TopIndex per restituire o impostare un valore che specifica quale elemento di un controllo ComboBox o ListBox viene visualizzato nella posizione di livello superiore. Questa proprietà viene comunemente utilizzata per scorrere l'elenco senza selezionare alcun elemento.
In Visual Basic 2008 il controllo ComboBox non prevede più il supporto per la proprietà TopIndex. Nella maggior parte dei casi ciò non dovrebbe costituire un problema, poiché l'impostazione della proprietà TopIndex non ha alcun effetto visibile, a meno che la proprietà Style non sia impostata su 1 - SimpleCombo. In questo caso, è possibile emulare tale funzionalità utilizzando un controllo ListBox e un controllo TextBox; il controllo ListBox supporta ancora la proprietà TopIndex.
Evento Scroll
In Visual Basic 6.0 l'evento Scroll viene utilizzato insieme alla proprietà TopIndex per eseguire azioni quando si scorre l'elenco. In Visual Basic 2008 l'evento Scroll non è supportato; tuttavia, nella maggior parte dei casi, l'evento SelectedIndexChanged dovrebbe costituire un valido sostituto.
Altre differenze
Oltre a quanto già menzionato, vi sono numerose differenze concettuali che riguardano tutti i controlli, tra cui le differenze nell'associazione dei dati, nella gestione del tipo di carattere, nelle operazioni di trascinamento della selezione e nel supporto della Guida. Per ulteriori informazioni, vedere Concetti relativi a Windows Form per gli utenti di Visual Basic 6.0.
Modifiche del codice per il controllo ComboBox
Nell'esempio riportato di seguito vengono illustrate le differenze nelle tecniche di codifica tra Visual Basic 6.0 e Visual Basic 2008.
Modifiche del codice per rendere un controllo ComboBox un controllo di sola lettura
Il codice riportato di seguito mostra come impedire a un utente di aggiungere nuovi elementi a un controllo ComboBox.
' Visual Basic 6.0
Combo1.Locked = True
' Visual Basic
ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
Modifiche del codice per selezionare l'elemento aggiunto più di recente in un controllo ComboBox
Il codice riportato di seguito mostra come impostare la selezione su un elemento aggiunto a livello di codice a un controllo ComboBox.
' Visual Basic 6.0
Combo1.AddItem "This is a new item"
Combo1.ListIndex = Combo1.NewIndex
' Visual Basic
Dim i As Integer
i = ComboBox1.Items.Add("This is a new item")
ComboBox1.SelectedIndex = i
Modifiche al codice Private Sub per l'associazione della proprietà ItemData
Il codice di seguito riportato mostra come associare un codice dipendente a ogni dipendente elencato in un controllo ComboBox e quindi recuperare tale codice in fase di esecuzione.
' Visual Basic 6.0
Private Sub Form_Load
Combo1.AddItem "Nancy Davolio"
Combo1.ItemData(Combo1.NewIndex) = 12345
Combo1.AddItem "Judy Phelps"
Combo1.ItemData(Combo1.NewIndex) = 67890
End Sub
Private Sub Combo1_Click()
Label1.Caption = "Empoyee #" & _
CStr(Combo1.ItemData(Combo1.ListIndex))
End Sub
' Visual Basic
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
ComboBox1.Items.Add("Nancy Davolio")
Microsoft.VisualBasic.Compatibility.VB6. _
SetItemData(ComboBox1, ComboBox1.Items.Count() - 1, 12345)
ComboBox1.Items.Add("Judy Phelps")
Microsoft.VisualBasic.Compatibility.VB6. _
SetItemData(ComboBox1, ComboBox1.Items.Count() - 1, 67890)
End Sub
' Visual Basic
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Label1.Text = "Employee #" & CStr( _
Microsoft.VisualBasic.Compatibility.VB6. _
GetItemData(ComboBox1, ComboBox1.SelectedIndex))
End Sub
Proprietà, metodi ed eventi equivalenti del controllo ComboBox
Nelle tabelle riportate di seguito sono elencati le proprietà, i metodi e gli eventi di Visual Basic 6.0, insieme ai rispettivi equivalenti di Visual Basic 2008. Non sono riportati nell'elenco le proprietà, i metodi e gli eventi aventi stesso nome e comportamento. Le costanti sono visualizzate, ove applicabile, sotto la proprietà o il metodo. Se non diversamente specificato, tutte le enumerazioni Visual Basic 2008 sono mappate allo spazio dei nomi System.Windows.Forms.
In questa tabella vengono forniti collegamenti ad argomenti in cui sono illustrate le differenze di comportamento. Quando non è presente un equivalente diretto in Visual Basic 2008, vengono forniti collegamenti ad argomenti in cui sono illustrate le alternative disponibili.
Proprietà
Visual Basic 6.0 |
Visual Basic 2008Equivalente |
||
---|---|---|---|
Appearance |
Nuova implementazione. Per ulteriori informazioni, vedere Proprietà Appearance e BorderStyle per gli utenti di Visual Basic 6.0. |
||
BackColor |
|
||
Container |
|||
DataChanged DataField DataFormat DataMember DataSource |
Nuova implementazione. Per ulteriori informazioni, vedere Controllo dati per gli utenti di Visual Basic 6.0. |
||
DragIcon DragMode |
Nuova implementazione. Per ulteriori informazioni, vedere Trascinamento della selezione per gli utenti di Visual Basic 6.0. |
||
Font FontBold FontItalic FontName FontSize FontStrikethrough FontUnderline |
|
||
ForeColor |
|
||
Height |
|
||
HelpContextID |
Nuova implementazione. Per ulteriori informazioni, vedere Supporto della Guida per gli utenti di Visual Basic 6.0. |
||
HWnd |
|||
Index |
Nuova implementazione. Per ulteriori informazioni, vedere Matrici di controlli per gli utenti di Visual Basic 6.0. |
||
ItemData |
Nuova implementazione. Per ulteriori informazioni, vedere Impossibile aggiornare la proprietà ItemData. |
||
Left |
|
||
List |
|||
ListCount |
|||
ListIndex |
|||
Locked |
|
||
MouseIcon |
Nuova implementazione. Per ulteriori informazioni, vedere Impossibile impostare un MousePointer personalizzato. |
||
MousePointer |
Per un elenco di costanti, vedere MousePointer per gli utenti di Visual Basic 6.0. |
||
NewIndex |
Nuova implementazione. Per ulteriori informazioni, vedere Impossibile aggiornare la proprietà NewIndex. |
||
OLEDragMode |
Nuova implementazione. Per ulteriori informazioni, vedere Trascinamento della selezione per gli utenti di Visual Basic 6.0. |
||
OLEDropMode |
Nuova implementazione. Per ulteriori informazioni, vedere Trascinamento della selezione per gli utenti di Visual Basic 6.0. |
||
Parent |
Metodo FindForm |
||
RightToLeft |
|||
SelLength |
|||
SelStart |
|||
SelText |
|||
Style |
|||
ToolTipText |
Componente ToolTip Per ulteriori informazioni, vedere Supporto di ToolTip per gli utenti di Visual Basic 6.0. |
||
Top |
|
||
TopIndex |
Nuova implementazione. Per ulteriori informazioni, vedere Proprietà TopIndex ed evento Scroll per gli utenti di Visual Basic 6.0. |
||
WhatsThisHelpID |
Nuova implementazione. Per ulteriori informazioni, vedere Supporto della Guida per gli utenti di Visual Basic 6.0. |
||
Width |
|
Metodi
Visual Basic 6.0 |
Visual Basic 2008Equivalente |
||
---|---|---|---|
AddItem |
|||
Clear |
|||
Drag |
Nuova implementazione. Per ulteriori informazioni, vedere Trascinamento della selezione per gli utenti di Visual Basic 6.0. |
||
Move |
|
||
OLEDrag |
Trascinamento della selezione per gli utenti di Visual Basic 6.0. |
||
RemoveItem |
Items.Remove |
||
SetFocus |
|||
ShowWhatsThis |
Nuova implementazione. Per ulteriori informazioni, vedere Supporto della Guida per gli utenti di Visual Basic 6.0. |
||
ZOrder |
BringToFront Funzioni SendToBack |
Eventi
Visual Basic 6.0 |
Visual Basic 2008Equivalente |
||
---|---|---|---|
Change |
|
||
Click |
|||
DblClick |
Nuova implementazione. Utilizzare gli eventi SelectedIndexChanged o TextChanged. |
||
DragDrop DragOver |
Nuova implementazione. Per ulteriori informazioni, vedere Trascinamento della selezione per gli utenti di Visual Basic 6.0. |
||
GotFocus |
|||
LostFocus |
|||
OLECompleteDrag OLEDragDrop OLEDragOver OLEGiveFeedback OLESetData OLEStartDrag |
Nuova implementazione. Per ulteriori informazioni, vedere Trascinamento della selezione per gli utenti di Visual Basic 6.0. |
||
Scroll |
Nuova implementazione. Per ulteriori informazioni, vedere Proprietà TopIndex ed evento Scroll per gli utenti di Visual Basic 6.0. |
||
Validate |
Note sull'aggiornamento
Quando un progetto Visual Basic 6.0 viene aggiornato a Visual Basic 2008, l'evento Change del controllo ComboBox viene mappato all'evento TextChanged del controllo ComboBox di Visual Basic 2008. Il comportamento dell'evento TextChanged è diverso da quello dell'evento Change e questa differenza può causare risultati indesiderati nel codice.
Tutto il codice che fa riferimento alle proprietà ItemData, Locked, NewIndex o TopIndex o che è presente nella routine eventiScroll non viene aggiornato. Il codice, in cui vengono aggiunti degli avvisi sotto forma di commenti, deve essere rimosso o modificato prima della compilazione dell'applicazione.
Vedere anche
Concetti
Comportamento dei colori per gli utenti di Visual Basic 6.0
Oggetto Font per gli utenti di Visual Basic 6.0
MousePointer per gli utenti di Visual Basic 6.0
Supporto di ToolTip per gli utenti di Visual Basic 6.0