2012-01-12 2 views
1

나는 이미지를 사용하는 경우가 가장 좋은 것이라고 생각 : enter image description here페인트

내가 내 컨트롤이있는 DateTimePicker 달력으로 창 밖으로 될 수 있다고합니다. 나는 방법으로 panelKalendar = new PanelDoubleBuffer();을 사용하고있다 : void panelKalendar_Paint(object sender, PaintEventArgs e) 나는 모든 것을 칠한다. 그러나 그것은 창문에 그림을 그리고 다른 모든 통제 아래에 있습니다. DateTimePicker에서 사용하는 "효과"를 얻으려면 어떻게해야합니까?

+0

[부모 제어의 경계를 넘어 확장 제어] 가능한 복제본 (http://stackoverflow.com/questions/2833683/control-extending-beyond-border-of-parent-control) –

답변

2

콤보 상자 (및 달력 컨트롤의 드롭 다운 패널)의 드롭 다운 목록은 바탕 화면의 하위 창입니다. 그게 당신이해야 할 일입니다. 컨트롤을 경계선없는 양식 안에 중첩시키고 해당 양식에 널 부모를 지정하여 응용 프로그램 창의 하위 항목이 아닌 최상위 창으로 만듭니다.

양식은 최상위 창이므로 양식의 로컬 좌표가 아닌 화면 좌표로 위치를 지정해야합니다. PointToScreen 메소드를 사용하여 해당 좌표를 가져올 수 있습니다.

+0

자녀가 필요하지 않습니다. 전혀 창문! 그게 문제입니다. 당신은 최상위 창을 원합니다. [부모와 소유자를 혼동하지 마십시오.] (http://blogs.msdn.com/b/oldnewthing/archive/2010/03/15/9978691.aspx). –

+0

@CodyGray 잠깐, 나도 틀릴 수도 있지만, 제게 설명해주십시오. 우리가 '바탕 화면의 자식'이라고 말할 때 NULL 부모로 만든 창을 의미하지 않습니까? 그리고 이것은 최상위 창을 말하는 것과 같지 않습니까? –

+0

그 말은 사람들이 말하는 것을 의미 할 수도 있지만 해석하는 방법이 아닙니다. 데스크톱의 자식 창은 말 그대로'SetParent'를 호출하고 데스크톱 창을 지정한 최상위 창과 같이 데스크톱 창을 상위 ​​창으로 가지는 창입니다. 그리고 이런 상황은 모달 대화 상자를 보여주기 위해'MessageBox'와 같은 것을 호출 할 때 치명적일 것입니다. –

0

나는 당신이 당신의 form아이 컨트롤이 부모 (form) 경계에 의해 잘립니다 원인 (즉, 당신이 실제로 무슨 일을하는지입니다)으로 원하는 것을 달성 할 수 두려워.

이모, 당신은이 panel 지금 나타나는 장소에 정확히을 표시하는 seprate WidnowdForm 컨트롤을 사용하려고 할 수 있습니다.

희망이 도움이됩니다.