Thursday, January 14, 2021

ListView에서 Column Headers 표시되지 않는다 왜?

외부 코드에서 ctrl-C ctrl-V로 가져온 경우에

OwnerDraw가 true가 아닌 지 확인해 보자. false로 바꾸면 잘 나올 것이다.

OwnerDraw==true인 경우 DrawColumnHeader, DrawItem, DrawSubItem events에 대한 handers 구현해야 한다.

Item/SubItem은 대개 스스로 구현하겠지만 header에 대해서는 default로 충분할 텐데,

        private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)

        {

            e.DrawDefault = true;

        }


이전 프로젝트에서 OwnerDraw를 구현해 뒀다가 오랜만에 꺼내서 쓰려고 할 때 이런 일이 생길 수 있다.



그 밖에 흔히들 하는 실수는 

 * View property가 Details로 맞춰져 있지 않은 경우

 * listView1.Items.Clear() 하지 않고 listView1.Clear() 해 버리는 경우 

등이 있다.

창 핸들을 만드는 동안 오류가 발생했습니다

System.ComponentModel.Win32Exception was unhandled   MyForm w = new MyForm IntPtr handle = wnd.Handle;   // Exception occurs here class MyFo...