В моем приложении 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 пользователь сбрасывает задание?