2013-05-28 11 views
6

come attivare lo zoom in controllo grafico di Microsoft utilizzando la rotellina del mouseAbilitazione rotella del mouse lo zoom in un controllo Microsoft Chart

Ho il codice qui sotto, ho bisogno di sapere come rendere questo evento? in quale classe è ..

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 { }    
} 

risposta

3

quello che hai è un metodo del gestore per l'evento MouseWheel. È necessario collegare il metodo del gestore all'evento MouseWheel per il controllo del grafico. Dalla firma del metodo, presumo che il controllo grafico si chiama chData, quindi è possibile utilizzare il seguente codice nel costruttore del modulo:

chData.MouseWheel += new EventHandler(chData_MouseWheel); 

Naturalmente, si potrebbe anche associare il gestore con l'evento in fase di progettazione. Per fare ciò, utilizzare la finestra Proprietà e fare clic sul fulmine nella barra degli strumenti per passare alla vista "Eventi". Quindi trova l'evento MouseWheel, fai clic sulla freccia del menu a discesa e seleziona la firma del metodo del gestore. Ciò farà sì che il progettista scriva il codice sopra nel file code-behind per il modulo.

A parte questo, c'è una gigantesca bandiera rossa nel codice: un blocco vuoto catch. Se non gestisci un'eccezione o non fai nulla, non dovresti prenderlo. Questo non è Pokemon, non c'è premio per prenderli tutti.

+0

4 anni dopo, ancora una risata da avere. \ – vipersassassin

5

Penso che la risposta di cui sopra dovrebbe essere,

chData.MouseWheel + = new MouseEventHandler (chData_MouseWheel);

Ma in base a quello che ho scoperto, la rotellina del mouse del grafico non funziona fintanto che non si imposta il focus sul controllo grafico nel codice. Quindi ho usato il mouse-enter del controllo grafico per impostare lo stato attivo sul grafico e il mouse lascia l'evento del controllo grafico per impostare il controllo sul suo genitore.

Quindi è necessario aggiungere sotto righe al codice, associare il mouse e il mouse per inserire gli eventi del controllo grafico in modo corrispondente e aggiungere anche la linea di cui sopra.

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

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