옆 사무실 사람의 질문을 받고 알게된 내용인데,
놀랍게도 C# WinForm의 프로그래스바 컨트롤은 현재 값을 프로그래스바 위에 표시하는 기능을 위한 속성이 없다!!!
옆 사무실 사람은 별도의 Label을 올려서 시도했으나, 투명배경 등 마음에 들지 않고, 두 개의 컨트롤이 나뉘어 지는 것에 대한 부담.. 등등 하여.. 방법을 찾아보다가 기존 WinSDK나 MFC의 C++에서 하던 윈도우 메시지를 아직도 C# WinForm에서 가로채서 무언가를 할 수 있다는 사실을 알게되었다.
ProgressBar를 상속해서 MyProgressBar 라는 클래스를 정의하고 (서브클래싱)
DefWndProc()를 재정의해서 윈도우 메시지를 가로챌 수 있다.
WM_PAINT에서 원래 그리는거 다 그린 다음에 직접텍스트를 그리는 코드 추가하면 된다.
다음은 사용법. 아직 컨트롤로 구현하지 않았기 때문에, 코드상에 넣어서 사용 가능함.
ProgressBar 클래스의 Value 속성 대신 서브클래스의 MyValue 속성을 사용하는 것 빼고는 사용법은 동일하다.
다음검색