FormDragger가 C#에서 양식 드래거를 구현하는 방법에 대한 자세한 설명

Y2J
풀어 주다: 2017-04-22 10:33:38
원래의
1591명이 탐색했습니다.

이 글에서는 주로 C# 컴포넌트 FormDragger를 자세히 소개하고 있는데, 관심 있는 친구들은 참고할 수 있습니다.

적용 가능: .net2.0+ winform 프로젝트

소개:

QQ, Thunder 등 UI 경험을 강조하는 소프트웨어는 창 내 여러 위치에서 드래그를 지원합니다. 상단 제목 표시줄을 선택하고 드래그합니다. 이 구성 요소를 사용하면 Winform이 자연스럽게 또는 훨씬 더 자연스럽게 드래그 앤 드롭할 수 있습니다. 먼저 효과를 살펴보세요.

FormDragger가 C#에서 양식 드래거를 구현하는 방법에 대한 자세한 설명

드래그할 수 있는 장소에는 다음이 포함되지만 이에 국한되지는 않습니다.

  • 다음과 같은 컨테이너 Form, Panel, GroupBox, TabControl 등 컨트롤의 빈 영역

  • 메뉴 표시줄, 도구 모음, 상태 표시줄 및 기타 표시줄의 빈 영역,

  • 일반적으로 마우스와 상호 작용하지 않는 레이블, PictureBox, ProgressBar 및 기타 컨트롤

  • 모두 잘못된 컨트롤( 활성화는 거짓입니다);

기본적으로 견인 가능하다고 생각되는 곳 어디든 견인할 수 있습니다.

사용법:

공개 회원 먼저 살펴보기:

//拖拽器开关
bool Enabled { get; set; }
//排除列表。可向其中添加或移除控件实例,处于列表中的控件不接受拖拽
List<Control> ExcludeControls { get; }
//事件:准备拖拽时发生,可用e.Cancel = true取消拖拽,e还携带其它信息
event EventHandler<FormDraggingCancelEventArgs> Dragging;
//事件:拖拽器开关状态改变后
event EventHandler EnabledChanged;
로그인 후 복사

언제 어디서나 사용하기 매우 간단합니다 FormDragger.Enabled = true/false는 드래그 앤 드롭 기능을 켜거나 끌 수 있습니다. 예를 들어, 자체 구축된 양식을 모두 마친 후 Main 기능에서 활성화할 수 있습니다. 프로그램에서는 자유롭게 끌어서 놓을 수 있지만 MessageBox와 마찬가지로 다양한 대화 상자(예: 파일 열기 대화 상자) 및 시스템에서 제공하는 기타 양식을 끌 수 없으므로 끌 수 없습니다. 실제로 시스템 대화 상자를 드래그하는 데 사용되는 DialogDragger.cs가 계획에 구현되었지만 색상 선택 대화 상자 ColorDialog에 문제가 있는 것으로 알려져 당분간 통합되지 않습니다. .필요하면 나중에 업데이트해서 시청하시는 걸 추천드립니다. 메시지 상자는 직접 만든 것이기 때문에 이것을 선택할 수도 있습니다.

드래그 앤 드롭 규칙을 적용한 컨트롤의 경우 마우스 왼쪽 버튼 클릭 메시지(예: MouseDown)가 도달할 수 없습니다. 가로채기 때문에 등록되었습니다. 그림 상자와 같이 드래그 가능한 컨트롤을 원하지 않고, "하이퍼링크" 기능을 갖게 하고, 클릭 시 등록된 MouseDown 이벤트 처리 방법을 실행시키려는 경우에는 클래스 이벤트가 발생하지 않습니다. 예외를 구현하는 방법에는 두 가지가 있습니다:

1. 예외 목록에 컨트롤을 추가합니다: FormDragger.ExcludeControls.Add(pictureBox1);//여기서 허용되는 것은 컨트롤 인스턴스이지, 컨트롤 인스턴스가 아닙니다. 컨트롤 유형
2. 이벤트 처리 방법에서 들어오는 e에는 클릭한 컨트롤을 나타내는 Control 속성이 있으므로 e.Control이 원하는 컨트롤인지 확인할 수 있습니다. 예외인 경우 e.Cancel = true로 설정합니다. 또한 e는 보조 판단을 위해 마우스 위치, 좌표 유형 등과 같은 다른 정보도 전달합니다.
소스에 위 시나리오의 예가 있습니다. 참조용 코드입니다.

원리:

Application.AddMessageFilter를 사용하여 프로그램에 메시지 필터를 추가하고, 프로그램 양식으로 전송된 마우스 왼쪽 클릭 메시지를 가로채서 처리합니다. 로직이 충족되면 메시지를 가로채서 제목 표시줄을 클릭하라는 메시지가 컨트롤이 있는 폼으로 전송되므로 컨트롤을 클릭하면 시스템은 폼의 제목 표시줄을 클릭한 것으로 간주합니다. 클릭됩니다. 자세한 처리 내용은 아래 주소를 참고해주세요.

제안 위치:
github.com/ahdung/FormDraggerDemo [우선순위]

coding.net/u/ahdung/p/FormDraggerDemo/git

git.oschina .net/ahdung/FormDraggerDemo

플랜에는 스크린샷과 같이 테스터가 작성되어 있으니 다운로드하여 체험해 보세요.

위 내용은 FormDragger가 C#에서 양식 드래거를 구현하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
c#
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿