private void toolTipController1_GetActiveObjectInfo(object sender, DevExpress.Utils.ToolTipControllerGetActiveObjectInfoEventArgs e) { if (Object.ReferenceEquals(e.SelectedControl, propertyGridControl1)) { VGridHitInfo hitInfo = propertyGridControl1.CalcHitInfo(e.ControlMousePosition); if (hitInfo.Row != null) { PropertyDescriptor pd = propertyGridControl1.GetPropertyDescriptor(hitInfo.Row); if (pd != null) { object o = pd; string description = string.Empty; if (string.IsNullOrEmpty(pd.Description)) { description = "No description available"; } else { description = pd.Description; } e.Info = new DevExpress.Utils.ToolTipControlInfo(o, description); } } } }
private void workGrid_MouseDown(object sender, MouseEventArgs e) { VGridHitInfo hit = workGrid.CalcHitInfo(e.Location); if (hit == null) { return; } switch (hit.HitInfoType) { case HitInfoTypeEnum.ValueCell: // Is No cell clicked? if (hit.Row.VisibleIndex == (int)EWorkItem.No) { RecordIndex = hit.RecordIndex; ResetAllRowBackground(); } if (hit.Row.VisibleIndex == (int)EWorkItem.MeasureCH) { string biasCh = (string)workGrid.GetCellValue(workGrid.VisibleRows[(int)EWorkItem.BiasCH], hit.RecordIndex); AddMeasureChLookUpItems(biasCh); } break; } }
int GetRecordIndex(VGridHitInfo dropHitInfo) { if (dropHitInfo.HitInfoType == HitInfoTypeEnum.ValueCell) { return(dropHitInfo.RecordIndex); } return(-1); }
void ProcessMouseDown(VGridControl vGrid, MouseEventArgs e) { if (vGrid == null) { return; } captureHitInfo = vGrid.CalcHitInfo(new Point(e.X, e.Y)); }
void VGrid_MouseClick(object sender, MouseEventArgs e) { VGridHitInfo hitInfo = VGrid.CalcHitInfo(VGrid.PointToClient(this.PointToScreen(e.Location))); if (hitInfo.Row != null && e.Button == System.Windows.Forms.MouseButtons.Left && e.Location.X - VGrid.ViewInfo[hitInfo.Row].ValuesRect.Left < 18 && e.Location.X - VGrid.ViewInfo[hitInfo.Row].ValuesRect.Left > 0) { RunFocusedLink(); } }
private bool ClickInEditor(MouseEventArgs e, out Rectangle editorBounds) { editorBounds = Rectangle.Empty; Point location = e.Location; VGridHitInfo hitInfo = _VGrid.CalcHitInfo(location); BaseRowViewInfo viewInfo = _VGrid.ViewInfo[location]; if (hitInfo.HitInfoType == HitInfoTypeEnum.HeaderCell && _Row == viewInfo.Row) { editorBounds = viewInfo.HeaderInfo.HeaderCellsRect; return(editorBounds.Contains(location)); } return(false); }
void ProcessDragDrop(VGridControl target, DragEventArgs e) { DragInfo dragInfo = (DragInfo)e.Data.GetData(typeof(DragInfo)); VGridControl source = dragInfo.Grid; DataItem item = (DataItem)dragInfo.Data; if (item == null || source == null || target == null) { return; } VGridHitInfo dropHitInfo = target.CalcHitInfo(target.PointToClient(new Point(e.X, e.Y))); int targetRecordIndex = GetRecordIndex(dropHitInfo); RemoveRecord(source, item); AddRecord(target, item, targetRecordIndex); source.RefreshDataSource(); target.RefreshDataSource(); }
private void vGridControl1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { if (isDragging) { VGridControl vGrid = sender as VGridControl; VGridHitInfo info = vGrid.CalcHitInfo(new Point(e.X, e.Y)); if (((info.HitInfoType == HitInfoTypeEnum.HeaderCell) || (info.HitInfoType == HitInfoTypeEnum.Row)) && (info.Row != dragOverRow) && (info.Row != draggedRow)) { DragOverRow = info.Row; } else if ((info.HitInfoType == HitInfoTypeEnum.Empty) || (info.HitInfoType == HitInfoTypeEnum.ValueCell)) { DragOverRow = null; } } }
private void workGrid_MouseDown(object sender, MouseEventArgs e) { VGridHitInfo hit = workGrid.CalcHitInfo(e.Location); if (hit == null) { return; } switch (hit.HitInfoType) { case HitInfoTypeEnum.ValueCell: // Is No cell clicked? if (hit.Row.VisibleIndex == (int)ETestWorkItem.No) { RecordIndex = hit.RecordIndex; ResetAllRowBackground(); } break; } }
private void OnCustomDrawRowHeaderCell(object sender, CustomDrawRowHeaderCellEventArgs e) { Point hitPoint = MousePosition; //if (!(e.Row is CategoryRow)) return; VGridControl grid = (VGridControl)sender; VGridHitInfo hitInfo = ((VGridControl)sender).CalcHitInfo(grid.PointToClient(hitPoint)); if (hitInfo.Row != e.Row) { return; } BaseRowViewInfo rowInfo = null; foreach (BaseRowViewInfo info in grid.ViewInfo.RowsViewInfo) { if (info is CategoryRowViewInfo) { continue; } rowInfo = info; break; } if (rowInfo == null) { return; } RowValueInfo valueInfo = null; foreach (RowValueInfo info in rowInfo.ValuesInfo) { if (info.Bounds.X < hitInfo.PtMouse.X && info.Bounds.Right > hitInfo.PtMouse.X) { valueInfo = info; break; } } if (valueInfo == null) { return; } e.Handled = true; e.Appearance.DrawBackground(e.Cache, e.Bounds); e.Appearance.DrawString(e.Cache, e.Caption, e.CaptionRect); if (e.ImageIndex > 0) { ImageCollection.DrawImageListImage(e.Cache, e.Row.Properties.Images, e.ImageIndex, e.ImageRect); } if (e.Focused) { XPaint.Graphics.DrawFocusRectangle(e.Graphics, e.FocusRect, e.Appearance.ForeColor, e.Appearance.BackColor); } Rectangle hotTrackRect = new Rectangle(valueInfo.Bounds.X, e.Bounds.Y, valueInfo.Bounds.Width, e.Bounds.Height); hotTrackRect.Inflate(-1, -1); e.Graphics.FillRectangle(Brushes.AliceBlue, hotTrackRect); e.Graphics.DrawRectangle(Pens.Blue, hotTrackRect); }
/// <summary> /// 单击VGridview生成图表 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void StatisticsAndChart_vGridControl_MouseClick(object sender, MouseEventArgs e) { DevExpress.XtraVerticalGrid.VGridControl gridcontrol = new DevExpress.XtraVerticalGrid.VGridControl(); gridcontrol = sender as DevExpress.XtraVerticalGrid.VGridControl; VGridHitInfo info = gridcontrol.CalcHitInfo(new Point(e.X, e.Y)); //当左键单击HeaderCell时 if (info.HitInfoType == HitInfoTypeEnum.HeaderCell && info.Row.HasChildren && e.Button == MouseButtons.Left && info.Row.Properties.Caption.IndexOf('*') != 0) { BaseRow baserow = gridcontrol.FocusedRow; CategoryRow gr = baserow as CategoryRow; //根据tag加载列数据 if (gr != null && gr.Tag != null) { string[] data = null; //判断字段类型是否为数值型 if (gridview.Columns[gr.Properties.Caption].ColumnType.IsValueType) { //读取tag中的数据至数组 double[] doubledata = gr.Tag as double[]; List <double> doublelist = doubledata.ToList(); //计算唯一值及唯一值个数 List <double> d_uniquevalue = doubledata.Distinct().ToList(); int d_uniquecount = d_uniquevalue.Count; //当唯一值个数大于30时,执行分组处理 if (d_uniquecount > 30) { //计算分组间距 double interval = (d_uniquevalue.Max() - d_uniquevalue.Min()) / 25; //计算图表中加入点的值 List <string> chart_uniquevalue = new List <string>(); for (int n = 0; n < 26; n++) { if (n == 25) { chart_uniquevalue.Add((interval * n).ToString("0.0") + "-" + d_uniquevalue.Max().ToString("0.0")); } else { chart_uniquevalue.Add((interval * n).ToString("0.0") + "-" + (interval * (n + 1)).ToString("0.0")); } } double max = d_uniquevalue.Max(); //chart_uniquevalue.Add((d_uniquevalue.Max()).ToString()); //声明26个list类型的数组 List <double>[] findlist = new List <double> [26]; for (int n = 0; n < 26; n++) { findlist[n] = new List <double>(); } //根据分组间距,将所有数据存放到对应的26个list中 for (int n = 0; n < doublelist.Count; n++) { findlist[(int)(doublelist[n] / interval)].Add(doublelist[n]); } //完成分组 //清除图表数据,重新载入数据 for (int i = 0; i < StatisticsChart_chart1.Series.Count; i++) { StatisticsChart_chart1.Series.RemoveAt(i); } //创建图表 Series series = new Series(gr.Properties.Caption + "_Count", ViewType.Bar); for (int n = 0; n < 26; n++) { series.Points.Add(new SeriesPoint(chart_uniquevalue[n].ToString(), findlist[n].Count)); } StatisticsChart_chart1.Series.Add(series); } else { data = new string[gridview.RowCount]; for (int i = 0; i < doubledata.Count(); i++) { data[i] = doubledata[i].ToString(); } } } else { data = new string[gridview.RowCount]; data = gr.Tag as string[]; } if (data != null) { List <string> datalist = data.ToList(); //获取唯一值 List <string> UniqueValue = data.Distinct().ToList(); int uniquecount = UniqueValue.Count; if ((uniquecount <= 300) || (uniquecount > 300 && (MessageBox.Show("分类数较多,是否继续?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes))) { //清除图表数据,重新载入数据 for (int i = 0; i < StatisticsChart_chart1.Series.Count; i++) { StatisticsChart_chart1.Series.RemoveAt(i); } //创建图表 Series series1 = new Series("", ViewType.Bar); for (int i = 0; i < uniquecount; i++) { series1.Points.Add(new SeriesPoint(UniqueValue[i], (datalist.FindAll(value => value.Contains(UniqueValue[i]))).Count)); } StatisticsChart_chart1.Series.Add(series1); } } //生成X坐标轴名称 XYDiagram diagram = (XYDiagram)StatisticsChart_chart1.Diagram; diagram.AxisX.Title.Visible = true; diagram.AxisX.Title.Alignment = StringAlignment.Center; diagram.AxisX.Title.Text = info.Row.Properties.Caption; //生成Y坐标轴名称 diagram.AxisY.Title.Visible = true; diagram.AxisY.Title.Alignment = StringAlignment.Center; diagram.AxisY.Title.Text = "Count"; } } }