- Пошаговое руководство. Выполнение операции перетаскивания в Windows Forms Walkthrough: Performing a Drag-and-Drop Operation in Windows Forms
- Перетаскивание данных Dragging Data
- Начало операции перетаскивания To start a drag operation
- Завершение перетаскивания данных Dropping Data
- Завершение операции перетаскивания To perform a drop
- Функциональная возможность перетаскивания в Windows Forms Drag-and-Drop Functionality in Windows Forms
- Выполнение операций перетаскивания Performing Drag-and-Drop Operations
- События, относящиеся к операциям перетаскивания Events Related to Drag-and-Drop Operations
- События в текущем целевом объекте Events on the Current Target
- События в исходном объекте Events on the Source
- Перемещение формы если свойство формы FormBorderStyle : none
Пошаговое руководство. Выполнение операции перетаскивания в Windows Forms Walkthrough: Performing a Drag-and-Drop Operation in Windows Forms
Для выполнения операций перетаскивания в приложениях на основе Windows необходимо выполнить обработку ряда событий, особенно DragEnter DragLeave событий, и DragDrop . To perform drag-and-drop operations within Windows-based applications you must handle a series of events, most notably the DragEnter, DragLeave, and DragDrop events. Работая со сведениями, доступными через аргументы этих событий, можно значительно упростить операции перетаскивания. By working with the information available in the event arguments of these events, you can easily facilitate drag-and-drop operations.
Перетаскивание данных Dragging Data
Все операции перетаскивания начинаются с переноса данных. All drag-and-drop operations begin with dragging. Функция, позволяющая собирать данные при начале перетаскивания, реализуется в DoDragDrop методе. The functionality to enable data to be collected when dragging begins is implemented in the DoDragDrop method.
В следующем примере MouseDown событие используется для запуска операции перетаскивания, поскольку она является наиболее интуитивно понятной (большинство действий по перетаскиванию начинается с нажатия кнопки мыши). In the following example, the MouseDown event is used to start the drag operation because it is the most intuitive (most drag-and-drop actions begin with the mouse button being depressed). Однако не забывайте, что любое событие может использоваться для инициализации процедуры перетаскивания. However, remember that any event could be used to initiate a drag-and-drop procedure.
Некоторые элементы управления имеют собственные события перетаскивания. Certain controls have custom drag-specific events. ListView TreeView Для элементов управления и, например, имеется ItemDrag событие. The ListView and TreeView controls, for example, have an ItemDrag event.
Начало операции перетаскивания To start a drag operation
В MouseDown событии для элемента управления, в котором начнется перетаскивание, используйте DoDragDrop метод, чтобы задать перетаскиваемые данные и разрешить перетаскивание разрешенных эффектов. In the MouseDown event for the control where the drag will begin, use the DoDragDrop method to set the data to be dragged and the allowed effect dragging will have. Дополнительные сведения см. в разделах Data и AllowedEffect. For more information, see Data and AllowedEffect.
В следующем примере показан запуск операции перетаскивания. The following example shows how to initiate a drag operation. Элемент управления, в котором начинается перетаскивание Button , является элементом управления, перетаскиваемые данные — это строка, представляющая Text свойство Button элемента управления, и разрешенные эффекты можно копировать или перемещать. The control where the drag begins is a Button control, the data being dragged is the string representing the Text property of the Button control, and the allowed effects are either copying or moving.
В качестве параметра в методе можно использовать любые данные DoDragDrop . в приведенном выше примере Text Button используется свойство элемента управления (вместо жесткого кодирования значения или извлечения данных из набора данных), поскольку свойство было связано с расположением, которое перетаскивается из ( Button элемент управления). Any data can be used as a parameter in the DoDragDrop method; in the example above, the Text property of the Button control was used (rather than hard-coding a value or retrieving data from a dataset) because the property was related to the location being dragged from (the Button control). Учитывайте это при реализации операций перетаскивания в приложениях Windows. Keep this in mind as you incorporate drag-and-drop operations into your Windows-based applications.
Пока действует операция перетаскивания, можно выполнить обработку QueryContinueDrag события, которое «запрашивает разрешение» системы, чтобы продолжить операцию перетаскивания. While a drag operation is in effect, you can handle the QueryContinueDrag event, which «asks permission» of the system to continue the drag operation. При обработке этого метода также является подходящая точка для вызова методов, которые влияют на операцию перетаскивания, например, расширение объекта TreeNode в TreeView элементе управления при наведении курсора мыши на него. When handling this method, it is also the appropriate point for you to call methods that will have an effect on the drag operation, such as expanding a TreeNode in a TreeView control when the cursor hovers over it.
Завершение перетаскивания данных Dropping Data
После начала перетаскивания данных из расположения в форме Windows Forms или элементе управления их требуется куда-то поместить. Once you have begun dragging data from a location on a Windows Form or control, you will naturally want to drop it somewhere. При попадании курсора в область формы или элемента управления, которые правильно настроены для размещения данных, вид курсора изменится. The cursor will change when it crosses an area of a form or control that is correctly configured for dropping data. Любая область внутри формы или элемента управления Windows может быть сделана для приема пропущенных данных путем установки AllowDrop Свойства и обработки DragEnter DragDrop событий и. Any area within a Windows Form or control can be made to accept dropped data by setting the AllowDrop property and handling the DragEnter and DragDrop events.
Завершение операции перетаскивания To perform a drop
Присвойте AllowDrop свойству значение true. Set the AllowDrop property to true.
В DragEnter событии для элемента управления, в котором будет выполняться перетаскивание, убедитесь, что перетаскиваемые данные имеют допустимый тип (в данном случае Text ). In the DragEnter event for the control where the drop will occur, ensure that the data being dragged is of an acceptable type (in this case, Text). Затем код задает результат, который будет выполняться при выполнении перетаскивания в значение в DragDropEffects перечислении. The code then sets the effect that will happen when the drop occurs to a value in the DragDropEffects enumeration. Для получения дополнительной информации см. Effect. For more information, see Effect.
Вы можете определить собственное DataFormats , указав собственный объект в качестве Object параметра SetData метода. You can define your own DataFormats by specifying your own object as the Object parameter of the SetData method. При этом необходимо убедиться, что указанный объект является сериализуемым. Be sure, when doing this, that the object specified is serializable. Для получения дополнительной информации см. ISerializable. For more information, see ISerializable.
В DragDrop событии для элемента управления, в котором будет выполняться удаление, используйте GetData метод для получения перетаскиваемых данных. In the DragDrop event for the control where the drop will occur, use the GetData method to retrieve the data being dragged. Для получения дополнительной информации см. Data. For more information, see Data.
В приведенном ниже примере элемент TextBox управления — это элемент управления, к которому выполняется перетаскивание (где произойдет удаление). In the example below, a TextBox control is the control being dragged to (where the drop will occur). Код задает Text свойство TextBox элемента управления, равное перетаскиваемых данным. The code sets the Text property of the TextBox control equal to the data being dragged.
Кроме того, можно работать со KeyState свойством, чтобы, в зависимости от нажатых клавиш во время операции перетаскивания, были выполнены определенные эффекты (например, для копирования перетаскиваемых данных при нажатии клавиши CTRL). Additionally, you can work with the KeyState property, so that, depending on keys depressed during the drag-and-drop operation, certain effects occur (for example, it is standard to copy the dragged data when the CTRL key is pressed).
Функциональная возможность перетаскивания в Windows Forms Drag-and-Drop Functionality in Windows Forms
Windows Forms включает набор методов, событий и классов, реализующих режим перетаскивания. Windows Forms includes a set of methods, events, and classes that implement drag-and-drop behavior. В этом разделе приводится обзор поддержки перетаскивания в Windows Forms. This topic provides an overview of the drag-and-drop support in Windows Forms. Также см. раздел операции перетаскивания и поддержка буфера обмена. Also see Drag-and-Drop Operations and Clipboard Support.
Выполнение операций перетаскивания Performing Drag-and-Drop Operations
Для выполнения операций перетаскивания используйте метод DoDragDrop класса Control. To perform a drag-and-drop operation, use the DoDragDrop method of the Control class. Подробнее о том, как выполняется операция перетаскивания, см. в описании метода DoDragDrop. For more information about how a drag-and-drop operation is performed, see DoDragDrop. Для получения прямоугольника, над которым должен быть перемещен указатель мыши, чтобы началась операция перетаскивания, используется свойство DragSize класса SystemInformation. To get the rectangle that the mouse pointer must be dragged over before a drag-and-drop operation begins, use the DragSize property of the SystemInformation class.
События, относящиеся к операциям перетаскивания Events Related to Drag-and-Drop Operations
С операцией перетаскивания связаны две категории событий: события, возникающие в текущем целевом объекте операции перетаскивания, и события, возникающие в ее исходном объекте. There are two categories of events in a drag and drop operation: events that occur on the current target of the drag-and-drop operation, and events that occur on the source of the drag and drop operation.
События в текущем целевом объекте Events on the Current Target
В приведенной ниже таблице перечислены события, возникающие в текущем целевом объекте операции перетаскивания. The following table shows the events that occur on the current target of a drag-and-drop operation.
Событие мыши Mouse Event | Описание Description |
---|---|
DragEnter | Это событие происходит при перетаскивании объекта внутрь границ элемента управления. This event occurs when an object is dragged into the control’s bounds. Обработчик этого события принимает аргумент типа DragEventArgs. The handler for this event receives an argument of type DragEventArgs. |
DragOver | Это событие происходит при перетаскивании объекта, пока указатель мыши находится в пределах границ элемента управления. This event occurs when an object is dragged while the mouse pointer is within the control’s bounds. Обработчик этого события принимает аргумент типа DragEventArgs. The handler for this event receives an argument of type DragEventArgs. |
DragDrop | Это событие происходит при завершении операции перетаскивания. This event occurs when a drag-and-drop operation is completed. Обработчик этого события принимает аргумент типа DragEventArgs. The handler for this event receives an argument of type DragEventArgs. |
DragLeave | Это событие возникает при перемещении объекта за границы элемента управления. This event occurs when an object is dragged out of the control’s bounds. Обработчик этого события принимает аргумент типа EventArgs. The handler for this event receives an argument of type EventArgs. |
В классе DragEventArgs содержится расположение указателя мыши, текущее состояние кнопок мыши и клавиш-модификаторов, перетаскиваемые данные и значения DragDropEffects, указывающие, какие операции допускаются источником события перетаскивания, и результат операции перетаскивания в целевой объект. The DragEventArgs class provides the location of the mouse pointer, the current state of the mouse buttons and modifier keys of the keyboard, the data being dragged, and DragDropEffects values that specify the operations allowed by the source of the drag event and the target drop effect for the operation.
События в исходном объекте Events on the Source
В таблице ниже приведены события, возникающие в исходном объекте операции перетаскивания. The following table shows the events that occur on the source of the drag-and-drop operation.
Событие мыши Mouse Event | Описание Description |
---|---|
GiveFeedback | Это событие возникает во время операции перетаскивания. This event occurs during a drag operation. Оно позволяет дать пользователю визуальную подсказку о том, что происходит операция перетаскивания, в виде, например, изменения указателя мыши. It provides an opportunity to give a visual cue to the user that the drag-and-drop operation is occurring, such as changing the mouse pointer. Обработчик этого события принимает аргумент типа GiveFeedbackEventArgs. The handler for this event receives an argument of type GiveFeedbackEventArgs. |
QueryContinueDrag | Это событие возникает во время операции перетаскивания и позволяет исходному объекту определить, следует ли отменить эту операцию. This event is raised during a drag-and-drop operation and enables the drag source to determine whether the drag-and-drop operation should be canceled. Обработчик этого события принимает аргумент типа QueryContinueDragEventArgs. The handler for this event receives an argument of type QueryContinueDragEventArgs. |
В классе QueryContinueDragEventArgs содержится текущее состояние кнопок мыши и клавиш-модификаторов, значение, указывающее, была ли нажата клавиша ESC, и значение DragAction, с помощью которого можно указать, следует ли продолжать операцию перетаскивания. The QueryContinueDragEventArgs class provides the current state of the mouse buttons and modifier keys of the keyboard, a value specifying whether the ESC key was pressed, and a DragAction value that can be set to specify whether the drag-and-drop operation should continue.
Перемещение формы если свойство формы FormBorderStyle : none
Перемещение формы без FormBorderStyle = null;
Здравствуйте! Помогите пожалуйста, вот к примеру у меня есть форма на ней нет ничего кроме 1.
Растяжение формы, если FormBorderStyle стоит None
Как можно растянуть форму, если в свойстве FormBorderStyle — None?
Перемещение формы при FormBorderStyle = None
Приветствую всех. Начал делать AutoRun для игры. Всё вроде получается, но наткнулся на.
Перетаскивание формы при FormBorderStyle = none
поставил FormBorderStyle = none, как теперь сделать, что-бы форму можно было перетаскивать?
Я не знаю, что ты делаешь, но у меня все работает.
Вот для панели
Все сделал как написано , но панель не двигается(
Может в свойствах панели что-то поставить надо?
Добавлено через 7 минут
Ничего не могу понять, ошибок нет, а панель не двигается.
Все сделал как написано , но панель не двигается(
Может в свойствах панели что-то поставить надо?
Добавлено через 7 минут
Ничего не могу понять, ошибок нет, а панель не двигается.
скорее всего у тебя на форме еще какие то контролы, и ты дергаешь за них. попробуй за пустую форму.
данную проблему пытаюсь сейчас решить, но пока что безуспешно)
а 4 вариант у меня кстати не заработал, выдает какую то ошибку на [DllImportAttribute(«user32.dll»)]
Все заработало.
Всем большое спасибо)))
Добавлено через 1 час 19 минут
А возможно такое чтоб при нажатии кнопки панель фиксировалась и не могла перемещаться.
Огромное спасибо.
Все работает (блокировка, разблокировка)
Где можно найти информацию по Windows Form?
(Искал в книгах по С#, но там очень мало)
Тематические курсы и обучение профессиям онлайн Профессия С#-разработчик (Skillbox) Архитектор ПО (Skillbox) Профессия Тестировщик (Skillbox) |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.
Изменение размера Формы при FormBorderStyle = None
Приветствую. Есть форма с FormBorderStyle = None, теперь появилась задача как изменять размер.
Изменение размера Формы при FormBorderStyle = None
Доброго времени суток. Побаловавшись со свойством FormBorderStyle = None и найдя код, при котором.
Свойство формы Location, или как рассчитать начальную позицию формы
Вообще, есть 2 формы, одна посередине другая рядом с ней стоит с права (или в правом верхнем углу).
Задать расположение формы в правом нижнем углу и запретить перемещение формы
Доброе время Подскажите пожалуйста, вот с этим: Необходимо задать расположение формы в правом.
Изменение размера формы указателем мыши при FormBorderStyle = None;
День добрый, возникла небольшая проблема:) Есть форма границы в форме отключены FormBorderStyle =.
Как считать свойство Point у PictureBox, если он невидим или находится за пределами формы?
Как считать свойство Point у PictureBox, если он невидим или находится за пределами формы? При этох.