728x90

ListView는 목록을 표시하는 컨트롤이다.


ListView 를 Layout 에 추가하는 방법은 도구상자에게 ListView 를 Drag 해서 뿌려질 화면위에 놓는다.




폼에서 설정해주면 *.Designer.cs 파일에 설정값이 저장된다.

this.listView1.GridLines = true;

this.listView1.View = System.Windows.Forms.View.Details;

폼 UI 에서 설정하지 않고 사용자 소스파일에서 listView1.View = View.Details; 라고 직접 설정해줘도 된다.


FullRowSelect : 항목이 선택될 때 하위 항목까지 한줄 전체를 선택한다.

MultiSelect : 복수 개의 항목을 선택할 수 있는지를 지정한다.

LabelEdit : 실행 중에 항목을 직접 편집할 수 있는지의 여부를 지정한다. default 는 false 이다.

LabelWrap : 항목의 텍스트를 줄바꿈하여 출력할 것인가를 지정한다.

Focuseditem : 현재 포커스를 가진 항목을 조사한다.



ListView 의 열(Column)의 편집은 칼럼(열)의 헤더를 설정(text, size)하는 방법이다.




칼럼 헤더의 Text, TextAlign, Width 를 지정한다.





dataGridView 와는 달리 listView 에서는 행(Row)는 첫열을 기준으로 해서 Item, 다음열부터는 subItem 으로 값을 입력한다.



listView1.Items.Clear(); // 데이터 내용 전부 지우기

listView1.Items.Count;  // 전체 항목의 개수 카운트


// listView 헤더행 숨기기

listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;


선택된 항목 지우기

if (listView1.SelectedItems.Count == 0)
{
    MessageBox.Show("선택된 항목이 하나도 없습니다.");
}
else
{
    while (listView1.SelectedItems.Count > 0)
        listView1.Items.Remove(listView1.SelectedItems[0]);
}



if (listView1.SelectedItems.Count > 0)
{
    int index = listView1.SelectedIndices[0]; // 선택된 첫번째 레코드의 인덱스
    foreach (ListViewItem row in listView1.SelectedItems)
    {

        int index = row.index;

        listView1.Items.Remove(row);  // 선택한 행 삭제
       
// listView1.Items[index].Remove();  // 다. index

    }
}


for (int row = 0; row < listView1.Items.Count; row++)
{
    string text = listView1.Items[row].SubItems[4].Text;
    if (Left(text,1) =="(" && Right(text,1) ==")")
    {
        listView1.Items[row].Remove();  // 선택한 행 삭제
    }
}


for (int row = listView1.SelectedIndices.Count - 1; row > 0; row--)
{
    index = listView1.SelectedItems[row].Index//
    listView1.Items[index].Remove(); // 삭제는 index 번호가 큰번호에서 작은번호 순으로
}



리스트 추가하기

private void btnAdd_Click(object sender, EventArgs e) // 추가 버튼
{
    ListViewItem lvt = new ListViewItem();
    lvt.Text = textBox1.Text;
    lvt.SubItems.Add(textBox2.Text);
    lvt.SubItems.Add(textBox3.Text);
    lvt.SubItems.Add(textBox4.Text);
    lvt.SubItems.Add(textBox5.Text);
    listView1.Items.Add(lvt);

    listView1.FullRowSelect = true;  // 행단위로 선택


    textBox1.Text ="";
    textBox2.Text ="";
    textBox3.Text ="";
    textBox4.Text ="";
    textBox5.Text ="";

}


* 다른 방법으로
ListViewItem lvt = new ListViewItem();
lvt.Text = textBox1.Text;

2줄을 한줄로 줄여서

ListViewItem lvt = new ListViewItem(textBox1.Text);

로 해도 된다.


리스트 수정하기

private void btnChange_Click(object sender, EventArgs e)    // 변경 버튼
{
    if (listView1.SelectedIndices.Count > 0)
    {
        listView1.SelectedItems[0].SubItems[0].Text = textBox1.Text;
        listView1.SelectedItems[0].SubItems[1].Text = textBox2.Text;
        listView1.SelectedItems[0].SubItems[2].Text = textBox3.Text;
        listView1.SelectedItems[0].SubItems[3].Text = textBox4.Text;
        listView1.SelectedItems[0].SubItems[4].Text = textBox5.Text;
    }
}


리스트 읽어오기

private void listView1_Click(object sender, EventArgs e)  // 해당 Row 클릭시 읽어오기
{
    if (listView1.SelectedIndices.Count > 0)
    {
        textBox1.Text = listView1.SelectedItems[0].SubItems[0].Text;
        textBox2.Text = listView1.SelectedItems[0].SubItems[1].Text;
        textBox3.Text = listView1.SelectedItems[0].SubItems[2].Text;
        textBox4.Text = listView1.SelectedItems[0].SubItems[3].Text;
        textBox5.Text = listView1.SelectedItems[0].SubItems[4].Text;
    }
}


private void listView1_KeyUp(object sender, EventArgs e)  // 해당 Row 에 키보드가 놓일때
{
    if (listView1.SelectedIndices.Count > 0)
    {
        textBox1.Text = listView1.SelectedItems[0].SubItems[0].Text;
        textBox2.Text = listView1.SelectedItems[0].SubItems[1].Text;
        textBox3.Text = listView1.SelectedItems[0].SubItems[2].Text;
        textBox4.Text = listView1.SelectedItems[0].SubItems[3].Text;
        textBox5.Text = listView1.SelectedItems[0].SubItems[4].Text;
    }
}



번호 매기기

for(int i=0 ; i < listView1.Items.Count ; i++)
{
    listView1.Items[i].SubItems[0].Text = (i + 1).ToString();
}


foreach (ListViewItem item in listView1.Items)
{
    // 수행할 내용
}



열의 특정값 변경

private void LVCellUpdate(ListView LV)
{
    int value = 0;
    foreach (ListViewItem row in LV.Items)
    {
        int.TryParse(row.SubItems[4].Text, out value);
        if (value == 10)
        {
            row.SubItems[4].Text = "보통";
        }
    }
}



private void LVCellUpdate(ListView LV)
{
    int value = 0;
    for (int row = 0; row < LV.Items.Count; row++)
    {
        //MessageBox.Show(LV.Items[row].SubItems[4].Text);
        int.TryParse(LV.Items[row].SubItems[4].Text, out value);
        if (value == 10)
        {
            LV.Items[row].SubItems[4].Text = "보통";
        }
    }
}


각 행(row)을 반복해서 돌아가면서 해당 행의 특정열의 값을 구하거나 다른 값으로 치환하고자 할 경우에는 LV.Items[row].SubItems[4].Text; 만 알면
선택된 행으로부터 currentindex 를 구할 수가 있다.
index 만 구하면 해당행을 삭제하거나 병합할 수 있다.


listView1.Items[previousindex].Selected = true;  //


listView2.Items[index].EnsureVisible();  // 내용을 스크롤하여 항목이 컨트롤에 표시되도록 함


// 상은

private void listView_ColorSet(ListView LV)
{
    for (int row = 0; row < LV.Items.Count; row++)
    {
        if (LV.Items[row].BackColor.Equals(Color.Aquamarine))
        {
            LV.Items[row].BackColor = Color.Aquamarine;
        } else if (LV.Items[row].BackColor.Equals(Color.YellowGreen))
        {
            LV.Items[row].BackColor = Color.YellowGreen;       
        }
        else
        {
            LV.Items[row].BackColor = Color.White;
        }               
    }
}

블로그 이미지

Link2Me

,