2011-09-02 5 views
7

winform 응용 프로그램에서 컨트롤 (예 : 레이블)을 끌어 놓기를 원합니다. 텍스트를 드래그 앤 드롭하는 몇 가지 예를 보았지만 이것이 내가 원하는 것은 아닙니다. 사용자가 컨트롤을 이동할 수있게하려고합니다. 누구든지 나를 어떤 자원이나 예제로 안내 할 수 있습니까? 감사.끌어서 놓기 Winform 컨트롤

+0

방금 ​​컨트롤을 재배치하고 싶습니까, 아니면 정보가 tr 인 곳에서 "drop"기능이 필요합니까? 안된다고? – Carsten

+3

[Here] (http://www.codeproject.com/Tips/178587/Draggable-WinForms-Controls?display=Print)는 유용한 간단한 확장입니다. – Reniuz

+0

코드 프로젝트의 내 arcticle을 참조하십시오 : [www.codeproject.com/Articles/36412/Drag-and-Drop-ListBox](http://www.codeproject.com/Articles/36412/Drag-and-Drop- 리스트 박스). 그러나 양식에서 Label araound를 움직이는 것은 드래그 앤 드롭이 아닙니다! –

답변

3

드래그 가능한 컨트롤을 만드는 방법에 대한 예제를 살펴보아야합니다.

여기에도 몇 가지 대답이 있습니다.

나는 오래 전에 델파이 비슷한했다

Tailor Your Application by Building a Custom Forms Designer with .NET

, 소스 코드를 검색합니다 변환 :

는이 Move controls when Drag and drop on panel in C#

이 폼 디자이너를 호스트하는 방법에 대한 완벽한 예입니다 참조 .NET C#으로 변환하고 위키 페이지를 만드십시오. 최근 인기있는 질문이되고 있습니다 :)

+0

Davide Piras는 호스팅 양식 디자이너가 코드 이동을 허용하고 나중에 양식로드를 위해 새 위치를 저장하는 코드를 추가하는 것보다 더 효과적 일 수 있다면 좋을 것입니다. \t 호스팅 디자이너의 원래 링크는 BTW가 더 이상 사용되지 않습니다. 가능한 링크는 https://blogs.msdn.microsoft.com/rprabhu/2004/06/15/designer-hosting-in-whidbey/?replytocom=5005#respond 이지만 대체는 그다지 유용하지 않습니다. C# 코드를 내보내거나 디자이너 화면에서 수행 할 수있는 작업을 표시하지 않습니다. 구현 세부 사항은 여전히 ​​많이 남아 있습니다. – gg89

1

내가 아는 한, 컨트롤을 컨테이너에 놓기를 원하는 곳에서는 모든 컨트롤이 컨테이너 역할을 할 수 있습니다. 첫 번째 컨테이너에서는 드래그해야하는 컨트롤의 drag 속성뿐 아니라 drop 속성을 활성화해야합니다.

그런 다음 각 컨트롤에 대한 이벤트 (Candrag, candrop, controladded 등)를 작성하여 개체를 보유하고 원하는대로 표시 할 논리를 지정하십시오.

콤보 박스에서 imagetext를 그림 상자로 드래그 한 다음 그림 상자에서 디렉토리의 텍스트와 관련 파일 이름을 분석하고 그 이미지를 현재 위치에로드하려는 경우를 예로 들어 보겠습니다.

여기에서 combombox에서 텍스트를 드래그하기 시작하면 이벤트 candrag에 일부 로직을 작성해야합니다. 그런 다음 드롭하면 추가 된 오브젝트가 무엇인지 이해하고 텍스트와 관련된 텍스트를 얻는 로직을 작성해야합니다 (일부 해독).

죄송합니다. 지금은 제공 할 코드가 없지만 아이디어를 얻었 으면합니다. 이 기사가 도움이 될 수 있습니까? http://vicky4147.wordpress.com/2007/02/04/a-simple-drag-drop-in-winforms/

+0

실제로 버튼이나 체크 박스에 컨트롤을 드롭하지 않을 수도 있습니다. 양식이나 패널 만 있고 나머지는 좋은 용기입니다. –

+0

사실, 텍스트 상자 오른쪽에 n을 드래그하는 용도가 없다는 것을 알고 있습니다. 모든 텍스트 상자가 방금 내려진 컨트롤에 텍스트 (있는 경우)를 표시 할 수 있습니다. 그래서 사용하지 :). – Zenwalker