Condividi tramite


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

BackColor

Nota:

I colori sono gestiti in modo diverso in Visual Basic 2008. Per ulteriori informazioni, vedere Comportamento dei colori per gli utenti di Visual Basic 6.0.

Container

Parent

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

Font

Nota:

I tipi di carattere sono gestiti in modo diverso in Visual Basic 2008. Per ulteriori informazioni, vedere Gestione dei tipi di carattere per gli utenti di Visual Basic 6.0.

ForeColor

ForeColor

Nota:

I colori sono gestiti in modo diverso in Visual Basic 2008. Per ulteriori informazioni, vedere Comportamento dei colori per gli utenti di Visual Basic 6.0.

Height

Height, Size

Nota:

Le coordinate sono gestite in modo diverso in Visual Basic 2008. Per ulteriori informazioni, vedere Sistema di coordinate per gli utenti di Visual Basic 6.0.

HelpContextID

Nuova implementazione. Per ulteriori informazioni, vedere Supporto della Guida per gli utenti di Visual Basic 6.0.

HWnd

Handle

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

Left

Nota:

Le coordinate sono gestite in modo diverso in Visual Basic 2008. Per ulteriori informazioni, vedere Sistema di coordinate per gli utenti di Visual Basic 6.0.

List

Items

ListCount

Count

ListIndex

SelectedIndex

Locked

DropDownStyle = 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 in Visual Basic 2008 annullando la selezione nell'evento MouseDown.

MouseIcon

Nuova implementazione. Per ulteriori informazioni, vedere Impossibile impostare un MousePointer personalizzato.

MousePointer

Cursor

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

RightToLeft

SelLength

SelectionLength

SelStart

SelectionStart

SelText

SelectedText

Style

DropDownStyle

ToolTipText

Componente ToolTip

Per ulteriori informazioni, vedere Supporto di ToolTip per gli utenti di Visual Basic 6.0.

Top

Top

Nota:

Le coordinate sono gestite in modo diverso in Visual Basic 2008. Per ulteriori informazioni, vedere Sistema di coordinate per gli utenti di Visual Basic 6.0.

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

Width, Size

Nota:

Le coordinate sono gestite in modo diverso in Visual Basic 2008. Per ulteriori informazioni, vedere Sistema di coordinate per gli utenti di Visual Basic 6.0.

Metodi

Visual Basic 6.0

Visual Basic 2008Equivalente

AddItem

Add

AddRange

Insert

Clear

Clear

Drag

Nuova implementazione. Per ulteriori informazioni, vedere Trascinamento della selezione per gli utenti di Visual Basic 6.0.

Move

SetBounds

Nota:

Le coordinate sono gestite in modo diverso in Visual Basic 2008. Per ulteriori informazioni, vedere Sistema di coordinate per gli utenti di Visual Basic 6.0.

OLEDrag

Trascinamento della selezione per gli utenti di Visual Basic 6.0.

RemoveItem

Items.Remove

SetFocus

Focus

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

TextChanged

Nota:

Il comportamento dell'evento TextChanged è leggermente diverso. Per ulteriori informazioni, vedere Evento Control Change di ComboBox per gli utenti di Visual Basic 6.0.

Click

SelectedIndexChanged

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

Enter

LostFocus

Leave

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

Validating

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

Riferimenti

Cenni preliminari sul controllo ComboBox (Windows Form)