Procedura: rispondere alla selezione nel controllo DataGrid Windows FormHow to: Respond to Clicks in the Windows Forms DataGrid Control

Nota

Benché il controllo DataGridView sostituisca il controllo DataGrid aggiungendovi funzionalità, il controllo DataGrid viene mantenuto per compatibilità con le versioni precedenti e per un eventuale uso futuro.The DataGridView control replaces and adds functionality to the DataGrid control; however, the DataGrid control is retained for both backward compatibility and future use, if you choose. Per altre informazioni, vedere Differenze tra i controlli DataGridView e DataGrid Windows Form.For more information, see Differences Between the Windows Forms DataGridView and DataGrid Controls.

Dopo il Windows Form DataGrid è connesso a un database, è possibile monitorare la cella selezionata dall'utente.After the Windows Forms DataGrid is connected to a database, you can monitor which cell the user clicked.

Per rilevare quando l'utente del controllo DataGrid seleziona una cella diversaTo detect when the user of the DataGrid selects a different cell

  • Nel CurrentCellChanged gestore eventi, scrivere il codice per rispondere in modo appropriato.In the CurrentCellChanged event handler, write code to respond appropriately.

    Private Sub myDataGrid_CurrentCellChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles myDataGrid.CurrentCellChanged  
       MessageBox.Show("Col is " & myDataGrid.CurrentCell.ColumnNumber _  
          & ", Row is " & myDataGrid.CurrentCell.RowNumber _  
          & ", Value is " & myDataGrid.Item(myDataGrid.CurrentCell))  
    End Sub  
    
    private void myDataGrid_CurrentCellChanged(object sender,   
    System.EventArgs e)  
    {  
       MessageBox.Show ("Col is " + myDataGrid.CurrentCell.ColumnNumber  
          + ", Row is " + myDataGrid.CurrentCell.RowNumber   
          + ", Value is " + myDataGrid[myDataGrid.CurrentCell] );  
    }  
    

    (Visual c#) Inserire il codice seguente nel costruttore del form per registrare il gestore dell'evento.(Visual C#) Place the following code in the form's constructor to register the event handler.

    this.myDataGrid.CurrentCellChanged += new  
       System.EventHandler(this.myDataGrid_CurrentCellChanged);  
    

Per determinare quale parte della griglia dati scelto dall'utenteTo determine which part of the DataGrid the user clicked

  • Chiamare il HitTest metodo in un gestore eventi appropriato, ad esempio per il MouseDown o Click evento.Call the HitTest method in an appropriate event handler, such as for the MouseDown or Click event.

    Il HitTest metodo restituisce un DataGrid.HitTestInfo oggetto che contiene la riga e colonna all'area selezionata.The HitTest method returns a DataGrid.HitTestInfo object that contains the row and column of a clicked area.

    Private Sub myDataGrid_MouseDown(ByVal sender As Object, _  
    ByVal e As MouseEventArgs) Handles myDataGrid.MouseDown  
       Dim myGrid As DataGrid = CType(sender, DataGrid)  
       Dim hti As System.Windows.Forms.DataGrid.HitTestInfo  
       hti = myGrid.HitTest(e.X, e.Y)  
       Dim message As String = "You clicked "  
    
       Select Case hti.Type  
          Case System.Windows.Forms.DataGrid.HitTestType.None  
             message &= "the background."  
          Case System.Windows.Forms.DataGrid.HitTestType.Cell  
             message &= "cell at row " & hti.Row & ", col " & hti.Column  
          Case System.Windows.Forms.DataGrid.HitTestType.ColumnHeader  
             message &= "the column header for column " & hti.Column  
          Case System.Windows.Forms.DataGrid.HitTestType.RowHeader  
             message &= "the row header for row " & hti.Row  
          Case System.Windows.Forms.DataGrid.HitTestType.ColumnResize  
             message &= "the column resizer for column " & hti.Column  
          Case System.Windows.Forms.DataGrid.HitTestType.RowResize  
             message &= "the row resizer for row " & hti.Row  
          Case System.Windows.Forms.DataGrid.HitTestType.Caption  
             message &= "the caption"  
          Case System.Windows.Forms.DataGrid.HitTestType.ParentRows  
             message &= "the parent row"  
       End Select  
    
       Console.WriteLine(message)  
    End Sub  
    
    private void myDataGrid_MouseDown(object sender,   
    System.Windows.Forms.MouseEventArgs e)  
    {  
       DataGrid myGrid = (DataGrid) sender;  
       System.Windows.Forms.DataGrid.HitTestInfo hti;  
       hti = myGrid.HitTest(e.X, e.Y);  
       string message = "You clicked ";  
    
       switch (hti.Type)   
       {  
          case System.Windows.Forms.DataGrid.HitTestType.None :  
             message += "the background.";  
             break;  
          case System.Windows.Forms.DataGrid.HitTestType.Cell :  
             message += "cell at row " + hti.Row + ", col " + hti.Column;  
             break;  
          case System.Windows.Forms.DataGrid.HitTestType.ColumnHeader :  
             message += "the column header for column " + hti.Column;  
             break;  
          case System.Windows.Forms.DataGrid.HitTestType.RowHeader :  
             message += "the row header for row " + hti.Row;  
             break;  
          case System.Windows.Forms.DataGrid.HitTestType.ColumnResize :  
             message += "the column resizer for column " + hti.Column;  
             break;  
          case System.Windows.Forms.DataGrid.HitTestType.RowResize :  
             message += "the row resizer for row " + hti.Row;  
             break;  
          case System.Windows.Forms.DataGrid.HitTestType.Caption :  
             message += "the caption";  
             break;  
          case System.Windows.Forms.DataGrid.HitTestType.ParentRows :  
             message += "the parent row";  
             break;  
          }  
    
          Console.WriteLine(message);  
    }  
    

    (Visual c#) Inserire il codice seguente nel costruttore del form per registrare il gestore dell'evento.(Visual C#) Place the following code in the form's constructor to register the event handler.

    this.myDataGrid.MouseDown += new  
       System.Windows.Forms.MouseEventHandler  
       (this.myDataGrid_MouseDown);  
    

Vedere ancheSee Also

Controllo DataGridDataGrid Control
Procedura: Modificare i dati visualizzati in fase di esecuzione nel controllo DataGrid Windows FormHow to: Change Displayed Data at Run Time in the Windows Forms DataGrid Control