2013-05-28 8 views
6

, wie durch die Verwendung MausradAktivieren Mausrad in einem Chart Control Microsoft Zoomen

ich den Code unten haben Zoomen in Microsoft Chart-Steuerelement zu aktivieren, ich muss wissen, wie dieses Ereignis zu machen? in welcher Klasse es ist ..

private void chData_MouseWheel(object sender, MouseEventArgs e) 
{ 
    try 
    { 
     if (e.Delta < 0) 
     { 
      chart1.ChartAreas[0].AxisX.ScaleView.ZoomReset(); 
      chart1.ChartAreas[0].AxisY.ScaleView.ZoomReset(); 
     } 

     if (e.Delta > 0) 
     { 
      double xMin = chart1.ChartAreas[0].AxisX.ScaleView.ViewMinimum; 
      double xMax = chart1.ChartAreas[0].AxisX.ScaleView.ViewMaximum; 
      double yMin = chart1.ChartAreas[0].AxisY.ScaleView.ViewMinimum; 
      double yMax = chart1.ChartAreas[0].AxisY.ScaleView.ViewMaximum; 

      double posXStart = chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.Location.X) - (xMax - xMin)/4; 
      double posXFinish = chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.Location.X) + (xMax - xMin)/4; 
      double posYStart = chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Location.Y) - (yMax - yMin)/4; 
      double posYFinish = chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Location.Y) + (yMax - yMin)/4; 

      chart1.ChartAreas[0].AxisX.ScaleView.Zoom(posXStart, posXFinish); 
      chart1.ChartAreas[0].AxisY.ScaleView.Zoom(posYStart, posYFinish); 
     } 
    } 
    catch { }    
} 

Antwort

3

Was Sie haben, ist eine Behandlungsmethode für die MouseWheel Ereignis. Sie müssen Ihre Handler-Methode an das Ereignis MouseWheel für die Diagrammsteuerung anfügen. Von der Methodensignatur, Ich gehe davon aus, dass Ihr Diagrammsteuer chData benannt ist, so dass Sie den folgenden Code in dem Formular Konstruktor verwenden:

chData.MouseWheel += new EventHandler(chData_MouseWheel); 

Natürlich könnten Sie auch assoziieren die Handler mit der Veranstaltung zur Entwurfszeit. Verwenden Sie dazu das Eigenschaftenfenster und klicken Sie auf den Blitz in der Symbolleiste, um zur Ansicht "Ereignisse" zu wechseln. Suchen Sie dann nach dem Ereignis MouseWheel, klicken Sie auf den Dropdown-Pfeil und wählen Sie die Signatur Ihrer Handlermethode aus. Dadurch wird der Designer den obigen Code in die CodeBehind-Datei für Ihr Formular schreiben.

Abgesehen davon gibt es eine riesige rote Fahne in Ihrem Code: ein leerer catch Block. Wenn Sie keine Ausnahme behandeln oder etwas damit machen, sollten Sie sie nicht abfangen. Dies ist kein Pokémon, es gibt keine Belohnung dafür, sie alle zu fangen.

+0

4 Jahre später, immer noch ein Lachen zu haben. \ – vipersassassin

5

ich denke, die oben genannte Antwort,

sollte

chData.MouseWheel + = new Mouseeventhandler (chData_MouseWheel);

Aber nach was ich herausgefunden habe, funktioniert das Mausrad des Diagramms nicht so lange, wie Sie nicht den Fokus auf die Diagrammsteuerung in Ihrem Code setzen. Also habe ich die Maus-Eingabe des Diagramm-Steuerelements verwendet, um den Fokus auf das Diagramm- und Maus-Verlassen-Ereignis des Diagramm-Steuerelements zu setzen, um das Steuerelement wieder auf das übergeordnete Element zu setzen.

So müssen Sie unter Zeilen zu Ihrem Code hinzufügen, binden Sie die Maus verlassen und die Maus geben Ereignisse der Diagrammsteuerung entsprechend und fügen Sie auch die obige Zeile hinzu.

private void chartTracking_MouseEnter(object sender, EventArgs e) 
    { 
     this.chartTracking.Focus(); 
    } 

    private void chartTracking_MouseLeave(object sender, EventArgs e) 
    { 
     this.chartTracking.Parent.Focus(); 
    } 
Verwandte Themen