Nasıl yapılır: Windows Forms DataGrid Denetiminde Tıklamalara Yanıt Verme
Not
DataGridViewDenetim yerini alır ve denetime işlevsellik ekler DataGrid ; ancak, isterseniz DataGrid Denetim hem geri uyumluluk hem de gelecekteki kullanım için korunur. daha fazla bilgi için bkz. Windows Forms DataGridView ve DataGrid denetimleri arasındaki farklar.
Windows Forms DataGrid bir veritabanına bağlandıktan sonra kullanıcının hangi hücreden tıkladığını izleyebilirsiniz.
DataGrid 'in kullanıcısının farklı bir hücre seçtiği zaman algılamak için
CurrentCellChangedOlay işleyicisinde, uygun şekilde yanıt vermek için kod yazın.
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 Subprivate 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#) Olay işleyicisini kaydetmek için formun oluşturucusuna aşağıdaki kodu yerleştirin.
this.myDataGrid.CurrentCellChanged += new System.EventHandler(this.myDataGrid_CurrentCellChanged);
Kullanıcının DataGrid 'in hangi kısmını tıkladığını belirleme
Yöntemini, HitTest veya olayı gibi uygun bir olay işleyicide çağırın MouseDownClick .
HitTestYöntemi, DataGrid.HitTestInfo tıklatılan alanın satırını ve sütununu içeren bir nesnesi döndürür.
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 Subprivate 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#) Olay işleyicisini kaydetmek için formun oluşturucusuna aşağıdaki kodu yerleştirin.
this.myDataGrid.MouseDown += new System.Windows.Forms.MouseEventHandler (this.myDataGrid_MouseDown);