|
#region Перемешение Вверх
private void btUp_Click(object sender, System.EventArgs e)
{
try
{
if(!(listView1.SelectedItems.Count>0))return;
int index = listView1.SelectedItems[0].Index;
int newIndex = index-1;
if(index<1)return;
listView1.Items.Insert(newIndex,(ListViewItem)listView1.SelectedItems[0].Clone());
listView1.Items.Remove(listView1.SelectedItems[0]);
listView1.Items[newIndex].Selected = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message+Environment.NewLine+ex.Source);
}
finally
{
}
}
#endregion
#region Перемешение Вниз
private void btDown_Click(object sender, System.EventArgs e)
{
try
{
if(!(listView1.SelectedItems.Count>0))return;
int index = listView1.SelectedItems[0].Index;
int newIndex = index+1;
if(newIndex>listView1.Items.Count-1)return;
listView1.Items.Insert(newIndex+1,(ListViewItem)listView1.SelectedItems[0].Clone());
listView1.Items.Remove(listView1.SelectedItems[0]);
listView1.Items[newIndex].Selected = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message+Environment.NewLine+ex.Source);
}
finally
{
}
}
#endregion
#region Меняем местами Итемы списка
private void ReplaceItems(ListViewItem li1 , ListViewItem li2 )
{
try
{
if(!(listView1.SelectedItems.Count>0))return;
int index = li1.Index;
int newIndex = li2.Index;
if(index>newIndex)
{
if(index<1)return;
listView1.Items.Insert(newIndex,(ListViewItem)li1.Clone());
listView1.Items.Remove(li1);
listView1.Items[newIndex].Selected = true;
}
else
{
int index2 = listView1.SelectedItems[0].Index;
int newIndex2 = index+1;
if(newIndex2>listView1.Items.Count-1)return;
listView1.Items.Insert(newIndex2+1,(ListViewItem)li1.Clone());
listView1.Items.Remove(listView1.SelectedItems[0]);
listView1.Items[newIndex2].Selected = true;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message+Environment.NewLine+ex.Source);
}
finally
{
}
}
#endregion
#region Сбросим курсор на умолчяние
private void listView1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
Cursor.Current = Cursors.Default;
}
#endregion
#region Перемещение Мышкой
private void listView1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
// Cursor saveCursor = Cursor.Current;
try
{
if(e.Button != MouseButtons.Left)return;
if(listView1.SelectedItems.Count<1)return;
ListViewItem _li = listView1.SelectedItems[0];
//Отобразим это курсором
Cursor.Current = Cursors.PanWest;
//Возмем елемент из под мышки
ListViewItem temp = listView1.GetItemAt(e.X,e.Y);
//Проверим, есть ли под мышкой элемент
if(temp == null) return;
//Проверим на то, изменилась ли строчька под мышкой
if(temp.Index!=listView1.SelectedItems[0].Index)
{ //Поменяим их местами
ReplaceItems(_li,temp);
}
}
catch (Exception ex)
{//коректно обработаем ошибку
MessageBox.Show(ex.Message+Environment.NewLine+ex.Source);
}
}
#endregion
http://sejton.vipik.ru/file/152/517/ListViewMoveItems.rar
|
|
|
|