作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 C# WinForms 应用程序中,我使用拖放操作将项目从 TreeView 控件移动到 Chart 控件。 (这是一个带有工作列表的日程安排应用程序,用户可以将它们放到日程表中)。当用户将一个项目放到图表上的现有 DataPoint 上时,我希望新项目成为一个 DataPoint 并取代旧项目(在队列中向下移动)。
以下是我所拥有的 DragDrop 事件处理程序,它还没有完全(但几乎)正常工作:
private void chart1_DragDrop(object sender, DragEventArgs e)
{
if (draggedJob != null) // This is set when user starts dragging
{
HitTestResult testResult = chart1.HitTest(e.X, e.Y, ChartElementType.DataPoint);
switch (testResult.ChartElementType)
{
case ChartElementType.DataPoint:
// This should happen if I dropped an item onto an existing DataPoint
// ...but testResult.ChartElementType is always "Nothing"
DataPoint existingPoint = (DataPoint)testResult.Object;
JobOrder jobToDisplace = (JobOrder)existingPoint.Tag;
ScheduleJob(draggedJob, jobToDisplace);
break;
default:
//This happens every time (it adds the item to the end of the schedule)
ScheduleJob(draggedJob);
break;
}
RefreshTreeView();
RefreshChart();
draggedJob = null;
}
}
任何人都可以挽救我的理智并帮助我弄清楚如何判断用户将作业拖放到哪个 DataPoint 上吗?
最佳答案
您获得的鼠标位置 (e.X, e.Y) 在屏幕坐标中。您必须将其映射到图表控件。修复:
var pos = chart1.PointToClient(new Point(e.X, e.Y));
HitTestResult testResult = chart1.HitTest(pos.X, pos.Y, ChartElementType.DataPoint);
关于c# - WinForms 图表 : How can I identify a DataPoint within the DragDrop event?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4822478/
我是一名优秀的程序员,十分优秀!