본문 바로가기
개발언어/C#

[C#] listview drag & drop 설정

by 창용이랑 2021. 4. 1.
728x90

출처 : m.blog.naver.com/jskimmail/221308645448

 

리스트뷰를 드래그앤드랍 만들기

중요속성.
AllowDrop = true 

이벤트는
DragEnter : 드래그시 마우스포인터 변경
DragDrop : 그랍시 처리 이벤트

 

using System.Windows.Forms;

namespace DragAndDrop
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            IniList(); // listview 설정
        }

        private void IniList ()
        {
            listView1.View = System.Windows.Forms.View.Details; ;// 목록 형으로 보이기
            listView1.CheckBoxes = true; // 체크박스가 있다 .
            listView1.GridLines = true; // 그리드 라인을 보여준다.
            listView1.FullRowSelect = true;  // 선태은 행으로 하기.

            listView1.AllowDrop = true; // drag and drop 허용
            // drag and drop
            this.listView1.DragDrop += new System.Windows.Forms.DragEventHandler(this.listView1_DragDrop);
            this.listView1.DragEnter += new System.Windows.Forms.DragEventHandler(this.listView1_DragEnter);

            // 컬럼 헤더 넣어주기.
            ColumnHeader colHeader = null;
            colHeader = new ColumnHeader();// 아이템 키
            colHeader.Name = "key"; // 컬럼 키
            colHeader.Text = "File";  // 컬럼 텍스트
            colHeader.Width = (int)(listView1.Width * 0.9); // 컬럼 폭 90%
            colHeader.TextAlign = HorizontalAlignment.Left; // 컬럼 정열
            listView1.Columns.Add(colHeader); colHeader = null;

        }


        /// <summary>
        /// 드랍하면 파일을 넣는다.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void listView1_DragDrop(object sender, DragEventArgs e)
        {

            if (e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
                if (files.Length >= 1)
                {
                    foreach (string file in files)
                    {
                        ListViewItem item = new ListViewItem(file);
                        listView1.Items.Add(item);
                        item = null;
                    }
                }
                
            }

        }
        
        /// <summary>
        /// 드래그하면 마우스 포인터로 바꾼다.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void listView1_DragEnter(object sender, DragEventArgs e)
        {
            // If the data is a file or a bitmap, display the copy cursor.
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                e.Effect = DragDropEffects.Copy; //포인터
            }
            else
            {
                e.Effect = DragDropEffects.None;
            }

        }
         

    }
}

DragAndDrop.zip
0.05MB