안녕하세요 반갑습니다.
제목을 어떻게 해야할지 감이 잘 안잡히네요;;
설명을 드리자면 => 2개의 Listview가 있고 똑같은 기능을하는 이벤트가 있습니다.
Ex) Item순서를 드래그 앤 드랍으로 바꾸는그런 평범한 기능이 있습니다.
밑에 소스가 Item을 끌어서 순서를 바꾸는 기능을 합니다.
private void ListView_MouseUp(object sender, MouseEventArgs e)
{
bool bSamePosition = false;
int i = 0;
this.Cursor = Cursors.Arrow;
ListViewItem selected = this.ListView.GetItemAt(e.X, e.Y);
if (null != selected)
{
foreach (ListViewItem l in ListView.SelectedItems)
{
if (l.Index == selected.Index)
{
bSamePosition = true;
break;
}
}
if (!bSamePosition)
{
foreach (ListViewItem l in SongView.SelectedItems)
{
if (l.Index == 0) i = 1;
l.Remove();
ListView.Items.Insert(selected.Index + i, l);
다음 이 소스를 클래스로 만들어서 이렇게 사용 중입니다.
public class ListItemMove
{
public ListItemMove(ListView Item, MouseEventArgs e)
{
bool bSamePosition = false;
int i = 0;
Item.Cursor = Cursors.Arrow;
ListViewItem selected = Item.GetItemAt(e.X, e.Y);
if (null != selected)
{
foreach (ListViewItem l in Item.SelectedItems)
{
if (l.Index == selected.Index)
{
bSamePosition = true;
break;
}
}
if (!bSamePosition)
{
foreach (ListViewItem l in Item.SelectedItems)
{
if (l.Index == 0) i = 1;
l.Remove();
Item.Items.Insert(selected.Index + i, l);
}
private void ListView_MouseUp(object sender, MouseEventArgs e)
{
ListItemMove ListViewMove = new ListItemMove(SongView, e);
}
여기까지 만들었고 만들고나니 욕심이 조금 더 나더군요.
완전히 똑같은 기능을해서 그냥 이벤트를 하나로 합쳐버리면 안될까하는 생각이 들었습니다.
( 각각의 이벤트를 정의하기 보단
두개의 ListView 이벤트를 둘다 SongView_MouseUp로 해서 작동하면 안될까?)
여기서 sender에 접근해서 시도해보았는데 막혀버렸습니다.
좋은 방법이 없을까해서 질문드립니다.
죄송합니다. 설명을 어떻게 해야할지 감이 안잡히네요.
2개의 ListView가 있고 같은 기능을하는 이벤트를 하나로 합치고 싶습니다.
그 방법에 대해서 질문 드립니다.