private void CleanUpAfterDrag() { var window = Window.GetWindow(_MetroControl); window.ClearValue(Window.AllowDropProperty); window.DragEnter -= HandleDrag; window.DragOver -= HandleDrag; window.DragLeave -= HandleDrag; window.Drop -= HandleDrop; window.GiveFeedback -= HandleGiveFeedback; VisualStateManager.GoToState(_DragTile, "IsNotDragSource", true); if (_DragAdorner != null) { _DragAdorner.Detach(); } if (_ScrollHelper != null) { _ScrollHelper.Stop(); } _DragAdorner = null; _DragSourcePage = null; _DragTile = null; _DragData = null; _TileDropHelper = null; _ScrollHelper = null; _NewPageHelper = null; }
protected override void OnMouseMove(System.Windows.Input.MouseEventArgs e) { if (e != null && !this.Disabled && this.IsOutmostPanel()) { if (this.AutoConnectEnabled) { this.RemoveAutoConnectAdorner(); } if (e.LeftButton == MouseButtonState.Pressed) { if (connectorEditor != null && connectorEditor.BeingEdited) { AutoScrollHelper.AutoScroll(e, this, 1); connectorEditor.Update(e.GetPosition(this)); e.Handled = true; } } } base.OnMouseMove(e); }
private void PrepareForDrag() { var window = Window.GetWindow(_MetroControl); window.AllowDrop = true; window.DragEnter += HandleDrag; window.DragOver += HandleDrag; window.DragLeave += HandleDrag; window.Drop += HandleDrop; window.GiveFeedback += HandleGiveFeedback; if (_MetroControlPanel == null) { _MetroControlPanel = _MetroControl.GetItemsHost(); } VisualStateManager.GoToState(_DragTile, "IsDragSource", true); _DragSourcePage = _DragTile.GetVisualParent <MetroStartPage>(); _DragData = _DragSourcePage != null?_DragSourcePage.ItemContainerGenerator.ItemFromContainer(_DragTile) : null; var adornerTemplate = (DataTemplate)_MetroControl.FindResource(MetroControl.DragAdornerDataTemplateKey); _DragAdorner = new TemplatedDragDropAdorner(_MetroControl, adornerTemplate, _DragData); _AdornerOffset = _MetroControl.TranslatePoint(_MouseDownPosition, _DragTile); _CenterOffset = new Point(); _CenterOffset.Offset((_DragTile.RenderSize.Width / 2) - _AdornerOffset.X, (_DragTile.RenderSize.Height / 2) - _AdornerOffset.Y); _TileDropHelper = new TileDropHelper(this); _ScrollHelper = new AutoScrollHelper(this); if (CanCreateNewPages()) { _NewPageHelper = new DragTileIntoNewPageHelper(this); } }
public ScrollInfo(AutoScrollHelper owner, GridView view) { this.owner = owner; this.view = view; this.scrollTimer = new Timer(); this.scrollTimer.Tick += new EventHandler(scrollTimer_Tick); }
private void EFDevGrid_Load(object sender, EventArgs e) { try { foreach (DevExpress.XtraGrid.Views.Base.BaseView baseView in this.Views) { if (baseView is DevExpress.XtraGrid.Views.Grid.GridView) { //为view添加行号显示事件 ((DevExpress.XtraGrid.Views.Grid.GridView)baseView).CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(gridView1_CustomDrawRowIndicator); //添加不绑定列[选择列]事件,添加一个选择列 ((DevExpress.XtraGrid.Views.Grid.GridView)baseView).CustomUnboundColumnData += new DevExpress.XtraGrid.Views.Base.CustomColumnDataEventHandler(EFDevGrid_CustomUnboundColumnData); this.DefaultViewChanged += new EventHandler(EFDevGrid_DefaultViewChanged); //数据源改变事件 this.DataSourceChanged += new EventHandler(EFDevGrid_DataSourceChanged); GetDataSourceTable();//get的时候会顺便设置dtDataSourceTemp if (dtDataSourceTemp != null) { dtDataSourceTemp.RowDeleting += new DataRowChangeEventHandler(dtDataSourceTemp_RowDeleting); dtDataSourceTemp.TableCleared += new DataTableClearEventHandler(dtDataSourceTemp_TableCleared); } //设置自动滚动辅助类对象 autoScrollHelper = new AutoScrollHelper(baseView as DevExpress.XtraGrid.Views.Grid.GridView); //设置检查单元格验证事件 if (CheckByteLength) { this.MainView.ValidatingEditor -= new DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventHandler(MainView_ValidatingEditor); this.MainView.ValidatingEditor += new DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventHandler(MainView_ValidatingEditor); } } } if (this.LevelTree != null) { for (int ii = 0; ii < this.LevelTree.Nodes.Count; ii++) { DevExpress.XtraGrid.Views.Base.BaseView baseView = this.LevelTree.Nodes[ii].LevelTemplate; if (baseView != null && baseView is DevExpress.XtraGrid.Views.Grid.GridView) { (baseView as DevExpress.XtraGrid.Views.Grid.GridView).CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(gridView1_CustomDrawRowIndicator); } } } //添加选择列 AddSelectedColumn(); //初始化弹出菜单 if (popMenu == null && (this.MainView is DevExpress.XtraGrid.Views.Grid.GridView)) { InitCustomMenu(this.MainView as DevExpress.XtraGrid.Views.Grid.GridView); this.MouseDown -= new System.Windows.Forms.MouseEventHandler(this.EFDevGrid_MouseDown); this.MouseDown += new MouseEventHandler(EFDevGrid_MouseDown); } //添加值改变事件--处理多行同时选中或取消选中 if (gridView1!=null) { gridView1.RowCellClick += new RowCellClickEventHandler(EFDevGrid_RowCellClick); gridView1.TopRowChanged += new EventHandler(gridView1_TopRowChanged); } //设置行的可编辑属性 this.MainView.MouseWheel += new MouseEventHandler(MainView_MouseWheel); this.MouseDown += new MouseEventHandler(EFDevGrid_MouseDownTemp); //this.VisibleChanged += new EventHandler(EFDevGrid_VisibleChanged); if (null != this.FindForm()) { this.FindForm().Shown += new EventHandler(EFDevGrid_Shown); } } catch (Exception ex) { System.Console.WriteLine("EFDevGrid_Load" + ex.Message); } }
/// <summary> /// 拖动时移动 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void EFDevGrid_DragOver(object sender, DragEventArgs e) { try { Point p = this.PointToClient(new Point(e.X, e.Y)); GridView view = this.GetViewAt(p) as GridView; if (view == null) return; GridHitInfo downHitInfoTemp = view.CalcHitInfo(p); //DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo downHitInfoTemp // = (DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo)this.MainView.CalcHitInfo(p); if (downHitInfoTemp.HitTest == GridHitTest.EmptyRow) { destRowIndex = gridView1.DataRowCount; } else { destRowIndex = downHitInfoTemp.RowHandle; } //destRowIndex = downHitInfoTemp.RowHandle; if (autoScrollHelper != null) { autoScrollHelper.ScrollIfNeeded(); } else { autoScrollHelper = new AutoScrollHelper(gridView1); autoScrollHelper.ScrollIfNeeded(); } } catch (Exception ex) { System.Console.WriteLine(ex.Message); } finally { //会画那根线,刷新,触发Pain事件 Refresh(); } }