private void ChartMouseClick(object sender, MouseEventArgs e) { if (manager == null) { return; } if (isDrilling) { return; } else { isDrilling = true; } if (e.Button == MouseButtons.Right) { manager.DrillUp(); } else { var hitInfo = flexChart1.HitTest(new Point(e.X, e.Y)); if (hitInfo != null && hitInfo.Distance < 2) { _currentValue = hitInfo.X; var tooltip = flexChart1.ToolTip.Content; flexChart1.ToolTip.Content = "Please wait while the details are being fetched"; flexChart1.Cursor = Cursors.WaitCursor; IEnumerable <object> data = null; FetchDataAsync(manager.DrillDownLevel).ContinueWith(t => { data = t.Result; flexChart1.Enabled = true; flexChart1.Invoke(new Action(() => { flexChart1.ToolTip.Hide(flexChart1); flexChart1.ToolTip.Content = tooltip; flexChart1.Cursor = Cursors.Default; manager.DrillDown(data); })); }); } } }