2011-05-10 2 views
5

사용자 지정 UserControl 창이 있고 UserControl 안에 텍스트 상자가 있다고 가정합니다. 창을 드래그하면 TextBox가 어떻게 움직이는 지 감지 할 수 있습니까?컨트롤이 이동 중임을 감지하는 방법은 무엇입니까?

RenderTransform 속성을 검색하려고했는데 "Freezable 개체 또는 해당 개체 중 하나가 변경 될 때 발생하는 변경 이벤트가 있습니다." 아무것도 결정적인 ..

편집 : 내 경우

, 나는 내가 보는 모든 UserControl을하고, 창을 표시하지 않고 내가 어떤 이상 갈 수 없어.

답변

6

창이 움직일 때 알림을받을 Window.LocationChanged 이벤트에 가입 할 수 있도록 텍스트 상자가 실제로 이동하지 않으므로 (윈도우와 관련된 동일한 위치에있을 가능성이 높음) Window 이벤트에 가입해야합니다 .

또한 제어 도구에 절대 위치가없는 경우 사용자가 창 크기를 조정 한시기를 알려주는 Window.SizeChanged을 구문 분석해야하지만 진행중인 이벤트와 반대되는 개별 최종 이벤트입니다.

+0

감사합니다. 하지만 실제로 텍스트 상자가 끈적 mdi 창 내부에있는 UserControl 안에 있기 때문에 내 경우에는 작동하지 않습니다. 내 코드에서 mdi를 볼 수 없기 때문에 mdi를 기반으로 아무 것도 할 수 없습니다. 나는 사건을 단순화하기 위해 창을 가지고 있다고 말했다. 내가해야 할 일은이 사건에 다르게 접근하는 것입니다. 이벤트를 발생시키는 프레임이되어서는 안됩니다. 텍스트 상자는 그 위치가 변경되었음을 감지해야합니다. – Mohamed

+0

또한 끌어서 놓기 컨트롤을 사용하는 응용 프로그램에서는 ...이 문제가 발생하지 않습니다. –

2

UserControl의 LayoutUpdated 이벤트에 가입 해보십시오.

+0

이것은 좋은 팁입니다. LayoutUpdated를 사용할 때 값 비싼 작업을하기 전에 컨트롤이 이동했는지 확인하십시오. LayoutUpdated 이벤트는 위치 변경 이상을 발생시킵니다. 컨트롤을 통해 아무 것도 움직이지 않으면 LayoutUpdated 이벤트가 많이 발생하는 경향이 있습니다. –

관련 문제