Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Se você adicionar itens para o controle ListView em um formulário do Microsoft Windows, você não pode reordenar os itens arrastando os itens no controle ListView em tempo de execução.
Para contornar esse problema, fornecem funcionalidade de arrastar-e-soltar para o controle ListView da seguinte maneira:
Adicione o seguinte código ao manipulador de eventos ListView1_ItemDrag .
Microsoft Visual Basic .NET ou código do Microsoft Visual Basic 2005
'Begins a drag-and-drop operation in the ListView control.
ListView1.DoDragDrop(ListView1.SelectedItems, DragDropEffects.Move)
Microsoft Visual translation from VPE for Csharp .NET ou Microsoft Visual translation from VPE for Csharp 2005 código
//Begins a drag-and-drop operation in the ListView control.
listView1.DoDragDrop(listView1.SelectedItems, DragDropEffects.Move);
Adicione o seguinte código ao manipulador de eventos ListView1_DragEnter .
Visual Basic .NET ou código do Visual Basic 2005
Dim i As Integer
For i = 0 To e.Data.GetFormats().Length - 1
If e.Data.GetFormats()(i).Equals("System.Windows.Forms.ListView+SelectedListViewItemCollection") Then
'The data from the drag source is moved to the target.
e.Effect = DragDropEffects.Move
End If
Next
translation from VPE for Csharp Visual .NET ou Visual translation from VPE for Csharp 2005 código
int len=e.Data.GetFormats().Length-1 ;
int i;
for (i = 0 ; i<=len ;i++)
{
if (e.Data.GetFormats()[i].Equals("System.Windows.Forms.ListView+SelectedListViewItemCollection"))
{
//The data from the drag source is moved to the target.
e.Effect = DragDropEffects.Move;
}
}
Adicione o seguinte código ao manipulador de eventos ListView1_DragDrop .
Visual Basic .NET ou código do Visual Basic 2005
'Return if the items are not selected in the ListView control.
If ListView1.SelectedItems.Count = 0 Then Return
'Returns the location of the mouse pointer in the ListView control.
Dim p As Point = ListView1.PointToClient(New Point(e.X, e.Y))
'Obtain the item that is located at the specified location of the mouse pointer.
Dim dragToItem As ListViewItem = ListView1.GetItemAt(p.X, p.Y)
If dragToItem Is Nothing Then Return
'Obtain the index of the item at the mouse pointer.
Dim dragIndex As Integer = dragToItem.Index
Dim i As Integer
Dim sel(ListView1.SelectedItems.Count) As ListViewItem
For i = 0 To ListView1.SelectedItems.Count - 1
sel(i) = ListView1.SelectedItems.Item(i)
Next
For i = 0 To ListView1.SelectedItems.Count - 1
'Obtain the ListViewItem to be dragged to the target location.
Dim dragItem As ListViewItem = sel(i)
Dim itemIndex As Integer = dragIndex
If itemIndex = dragItem.Index Then Return
If dragItem.Index < itemIndex Then
itemIndex = itemIndex + 1
Else
itemIndex = dragIndex + i
End If
'Insert the item in the specified location.
Dim insertitem As ListViewItem = dragItem.Clone
ListView1.Items.Insert(itemIndex, insertitem)
'Removes the item from the initial location while
'the item is moved to the new location.
ListView1.Items.Remove(dragItem)
Next
translation from VPE for Csharp visual .NET ou Visual translation from VPE for Csharp 2005 código
//Return if the items are not selected in the ListView control.
if(listView1.SelectedItems.Count==0)
{
return;
}
//Returns the location of the mouse pointer in the ListView control.
Point cp = listView1.PointToClient(new Point(e.X, e.Y));
//Obtain the item that is located at the specified location of the mouse pointer.
ListViewItem dragToItem = listView1.GetItemAt(cp.X, cp.Y);
if(dragToItem==null)
{
return;
}
//Obtain the index of the item at the mouse pointer.
int dragIndex = dragToItem.Index;
ListViewItem[] sel=new ListViewItem [listView1.SelectedItems.Count];
for(int i=0; i<=listView1.SelectedItems.Count-1;i++)
{
sel[i]=listView1.SelectedItems[i];
}
for(int i=0; i<sel.GetLength(0);i++)
{
//Obtain the ListViewItem to be dragged to the target location.
ListViewItem dragItem = sel[i];
int itemIndex = dragIndex;
if(itemIndex==dragItem.Index)
{
return;
}
if(dragItem.Index<itemIndex)
itemIndex++;
else
itemIndex=dragIndex+i;
//Insert the item at the mouse pointer.
ListViewItem insertItem = (ListViewItem)dragItem.Clone();
listView1.Items.Insert(itemIndex, insertItem);
//Removes the item from the initial location while
//the item is moved to the new location.
listView1.Items.Remove(dragItem);
}
Inicie o Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005.
Crie um novo aplicativo do Windows usando o Visual Basic. NET, Visual Basic 2005, Visual translation from VPE for Csharp 2005 ou Visual translation from VPE for Csharp .NET.
Por padrão, é criado o Form1.
Adicione o controle ListView ao Form1.
Clique com o botão direito do mouse ListView1 e, em seguida, clique em Propriedades .
Na caixa de diálogo Propriedades , clique na propriedade itens e, em seguida, clique o botão de reticências (... ).
No Editor de coleção ListViewItem diálogo caixa, clique quatro vezes em Adicionar .
Defina a propriedade texto do primeiro controle ListViewItem para Item1 , defina a propriedade Text do segundo controle ListViewItem para Item2 , definir a propriedade Text de terceiro controle ListViewItem para Item3 e, em seguida, defina a propriedade Text do controle ListViewItem quarto como Item4 .
No Editor de coleção ListViewItem diálogo caixa, clique em OK .
Na caixa de diálogo Propriedades de ListView1 , defina a propriedade View à lista .
Defina a propriedade AllowDrop ListView1 como True .
No menu Build , clique em Build Solution .
No menu Debug , clique em Iniciar .
Tente arrastar Item1 para um novo local no controle ListView .
Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
822482
(http://support.microsoft.com/kb/822482/
)
COMO: Fornecer funcionalidade de arrastar-e-soltar em aplicativos do Microsoft Windows usando o Microsoft Visual Basic .NET
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 822483
(http://support.microsoft.com/kb/822483/en-us/
)
Quanto esforço foi necessário para seguir os procedimentos deste artigo?
Muito baixo
Baixo
Moderado
Alto
Muito alto
Diga-nos o porque e o que podemos fazer para melhorar esta informação
Obrigado! Seus comentários são usados para nos ajudar a aperfeiçoar o conteúdo de suporte. Para obter mais opções de ajuda, visite a Home Page de Ajuda e Suporte.