+1  A: 

Take a look on this tutorial on dragging the points with mouse.

If you are using a LineObj instead of a curve, take a look on the FindNearestObject method.

Also if you want to make some "area of sensitivity" for clicking, this method should help you to transform mouse coordinates in pixels to pane scale coordinates.

The main idea is to:
- subscribe for MouseDown, MouseUp and MouseMove events
- in the handler for MouseDown event check if clicked point is near the curve/graph object you want to move
- do the change in similar way that it is shown in example from the first link

EDIT
Regarding your edit:
Let's assume you have a horizontal curve myCurve containing two points. Using FindNearestPoint you can find nearest clicked point and the curve containing this point.

So you have:

// mousePt is where you clicked
CurveItem nearestCurve = null;
int nearestID = -1;

myPane.FindNearestPoint(mousePt, out nearestCurve, out nearestID);
if(nearestCurve!=null)
   // remember the curve somewhere. 

Next handle the MouseMove and MouseUp events to find out how much you need to move your curve. You need to know only the change in Y (or Y2) direction as the curve is horizontal and you probably do not want to move it along X axis.

When you'll find out how much you need to move your curve (dy), just do:

for(int i=0; i<nearestCurve.Points.Count; i++)
    nearestCurve.Points[i].Y += dy;

Regarding your second question, in the documentation for LineObj.Location.Y2 you have:

Note that the Y2 position is stored internally as a Height offset from Y.

And Width/Height properties can be set easily, so you can do it this way.

Gacek
Thanks! Generally this looks manageable. But I'm unsure about a couple of things; Please see my edit above.. (not enough space here)
bretddog
See my edit, Hope it will be helpful
Gacek
Cheers! I can see this logic. But wouldn't this selection only trigger around the actual data-points on the LineItem or LineObj? I'm looking to extend this to make a line selectable at any chart-point along the "displayed" line, not only close to the actual (two) end-points that make up the line data. Would this require me to make a custom Find method which checks an imaginary interpolated point based on the end points for each line? Ah, Seems I didn't read in depth about LineObj..Y2. Now makes sense :)
bretddog
To make whole line selectable it is better to use LineObj - the `FindNearestObject` method checks the "area" of graphic object located on the pane, not only ending points. So I would strongly suggest to use `LineObj`. Even better, if you want the horizontal line be always present at the pane, from left ro right end of the chart, you can use (0,y) and (1, y) as the coordinates for this line and use `XChartFractionYscale` as `CoordinateFrame`
Gacek
Cool! very good you emphasized the LineObj.. I've now found out the basics of it, and it's of course very flexible. So now I made the drag work :) ....I have an issue with FindNearestPoint though, possibly, or maybe it's by design I'm not sure.. Described in "Edit 2" above..
bretddog
AFAIR, `FindNearest...` doesn't work for bar objects. You need to perform reverse transormation of clicked point and then check the positions manually
Gacek
I see, Thanks!,
bretddog