none
WinForm 사용자 정의 ListView 컨트롤 제작 시, DesignView 에러 문제 RRS feed

  • 질문

  •  

     안녕하세요. 

    WinForm 의 ListView 컨트롤을 서브클래싱 하여 사용하고 있습니다.

    ListView  컨트롤의 Column Header를 사용자가 정의한 색, 폰트 등으로 출력하기 위해 사용하는데

    Column Header 를 사용자 정의 색으로 그려도 컬럼 크기를 재조정하면 뒤에 기본 색이 출력되어 보기 좋지 않더군요.

    Code Project 의 다음 포스트를 참조하여 컬럼 크기를 재조정 하더라고 컬럼 크기를 리스트뷰 크기에 딱 맞게 조정시키는 것은 

    해결하였습니다.

    Autosize the last column in a ListView control using WndProc

     

    특이한 점은 Design View를 열고 폼에 서브클래싱한 ListView를 올려 둔 상태에서 빌드 및 실행 하면 에러 메시지가 나옵니다.

    에러 메시지는

    "The Control --- has thrown an unhandled exception in the designer and has been disabled

    Exception:

    The file --- cannot be modified in the designer while building or debugging. "

    하지만 응용프로그램은 잘 작동 되더군요.

    참조한 Code Project 의 포스트 질문에도 이 문제에 대해 질문을 올린 사람이 있는데.. 답변을 참조해도

    딱히 해결방법을 모르겠네요. try-catch 로 잡히지도 않고.. Design View를 연 상태에서 실행했을때만 발생하며, 그렇다고 응용프로그램이 종료되는 것도 아니고...

     

    위 이슈에 대해 조금이라도 알고 계신분이 있으면 좋겠습니다.

     

    감사합니다. :)

     

    2011년 2월 26일 토요일 오후 1:50

모든 응답

  • 안녕하세요 별로 도움이 될지는 모르겟지만

    제가 생각하기에는 사용하신 컨트롤이  Designer에서 Load되는 순간 코드상에 변화가

    발생하는 거 아닌가 싶습니다.

    예를 들어 Wrapping을 하기위해 제작한 Class(1)의 속성 값들이

    해당 Wrapping된 클래스를 사용하는 다른 팝업(2)이나 윈폼(2)등에서 로드되는 경우

    Disigner에서 원래 클래스(1)상의 Default값으로 (2)코드상의 값을 바꾸는 등의 이상한 부분들이 발생하는 거죠-->메세지 상으로 봐서는 디버깅 도중이 아니면 안나는 에러로 보입니다만

    아무튼 요런 경우에 해답은 잘 모르지만 문제가 계속 발생하시면

    원래 클래스(1) 소스만 VS에 로드 하신다음에

    사용하시는 VS를 대상으로 디버깅을 거시는 방법을 사용하시면 에러를 찾으실 수 있을 거 같습니다.

    별로 도움은 안되지만 혹시나 답답하시면 해볼만할 거 같아서 올려 보니다. ^^

    2011년 3월 25일 금요일 오전 11:59