Внедряване на движение на бутони с Drag&Drop и използване на персонализиран курсор,
Когато използва Drag & Drop, студиото използва курсори по подразбиране, които не винаги са подходящи за разработчика. В тази статия искам да покажа как можете да използвате вашия курсор. Успоредно с това ще разгледаме накратко самото внедряване на механизма Drag&Drop. За да накаратеDrop на бутона да вземе предвид координатите на щракване върху него в момента на плъзгане, координатите на точката на щракване могат да бъдат съхранени в свойствотоTag на бутона, което след това се чете в манипулатора на събитияDragDrop и новите координати на бутона се коригират съответно.
Нека създадем нов проектWindows Forms въвVisual Studio и да добавим два панела към формуляра:panSource иpanTarget. СвойствотоAllowDrop е зададено наtrue. Това просто ще ви позволи да приложите механизмаDrag&Drop :
В конструктора се абонирахме за събития за панелитеDragEnter иDragDrop.DragEnter се извиква, когато курсорът на мишката се премести до друга контрола.DragDrop - Възниква, когато операцията по плъзгане приключи. Ако забележите, ще имаме едни и същи манипулатори на събития и за двата панела. Нека разгледаме манипулаторите на събития:
Сега да преминем към бутона. За бутона сме се абонирали за две събитияMouseMove иGiveFeedBack.MouseMove - В този манипулатор на събития, а не вMouseDown, започва операцията за плъзгане. Това се прави така, че да остане възможно просто да щракнете върху бутона, без да стартирате процедурата за плъзгане и пускане. Ако не е необходимо да щракнете върху бутона по време на плъзгане, можете да започнете плъзгане в манипулаториMouseDown. Струва си да се отбележи, че този манипулатор ще бъде извикан само веднъж с всяко плъзгане (което всъщност етрябва да).
GiveFeedBack - Извиква се от контролата, ако е валидна за целта за пускане с посочения ефект на плъзгане. Именно в този манипулатор на събития се задават персонализирани курсори. Нека зададем персонализиран курсор:
Сега в манипулатора на събитиетоGiveFeedBack настройте нашия курсор:
PanelDragDropCursor.rar (59,1 KiB, 1039 изтегляния)