class Data
{
public int Item;
public override string ToString()
{
return item.ToString();
}
}
Data data = new Data();
data.Item = 10;
listBox1.Items.Add(data);
위와 같은 코드를 실행하면 리스트에 10이 잘 나오지만.. 후에 data의 item을 변경해도 리스트에서는 변하지 않는 것을 볼수 있습니다.. 이 것을 해결하려면 {
public int Item;
public override string ToString()
{
return item.ToString();
}
}
Data data = new Data();
data.Item = 10;
listBox1.Items.Add(data);
속성창에서 DrawMode를 OwnerDrawFixed로 변경하고, DrawItem 이벤트에 대한 함수를 만들고
private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground();
e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), e.Font,
new SolidBrush(e.ForeColor), e.Bounds);
e.DrawFocusRectangle();
}
이렇게 하면 변경된 값을 제대로 보여주게 됩니다..{
e.DrawBackground();
e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), e.Font,
new SolidBrush(e.ForeColor), e.Bounds);
e.DrawFocusRectangle();
}
주의할점은 리스트가 자동으로 다시 그려지지 않기 때문에.. 아이템의 값이 변경된후에 listBox1.Invalidate()를 호출하여서 다시 그리게 하여야합니다..
'컴퓨터 프로그래밍' 카테고리의 다른 글
C#, 윈도우 시스템 폴더 주소 가져오기 (1) | 2009.12.14 |
---|---|
WM_MOUSEWHEEL 메시지 받기 (0) | 2009.11.17 |
.NET의 Type Reflection (0) | 2008.10.30 |