Programming/C#

[C#] SubItem이 수정가능한 ListView

Foolishdevil 2010. 1. 31. 14:17



ListView에 대한 내용을 찾다가..
ListView 자체에서 수정가능한 컨트롤을 찾았다.
ListView에서 수정할 수 있는 컨트롤 textBox와 ComboBox를 추가하였다.
private Control[] Editors;
 
public void Form_Load(object sender, Eventargs e)
{
            Editors = new Control[] { null, textBox2, textBox2, comboBox4, comboBox4, comboBox4, comboBox4, comboBox4, comboBox4, comboBox4, comboBox4};
}

컨틀롤 변수를 선언하여.. 리스트뷰의 컬럼헤더를 어떤한 컨트롤로 변경할 건지에 대해서 지정해주며,
ListViewEx의 이벤트 중에서 SubItemClicked과 MouseMove 이벤트를 아래와 같이 작성해주면 정상적으로 ListView 안에서 SubItem을 수정할 수 있다.
private void ListViewEdit_SubItemClicked(object sender, ListViewEx.SubItemEventArgs e)
        {
            try
            {
                if (e.SubItem == 11)
                {
                    e.Item.SubItems[e.SubItem].Text = e.Item.Tag.ToString();
                }
                listViewEx1.StartEditing(Editors[e.SubItem], e.Item, e.SubItem);
            }
            catch(System.Exception)
            {
                return;
            }
        }

        private void ListViewEdit_MouseMove(object sender, MouseEventArgs e)
        {
            try
            {
                ListViewItem item;
                int index = listViewEx1.GetSubItemAt(e.X, e.Y, out item);
                if (item != null && index == 11)
                    toolTip1.SetToolTip(listViewEx1, item.Tag.ToString());
                else
                    toolTip1.SetToolTip(listViewEx1, null);
            }
            catch(System.Exception)
            {
                return;
            }
        }


출처 : http://www.codeproject.com/
프로젝트 소스를 받아서 지금 진행하고 있는 프로젝트에 적용 후 블로그에 게시 하였습니다. 저작권에 문제되시면 메일 주세요