DataGridView.ColumnHeaderMouseClick Ereignis
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Tritt auf, wenn der Benutzer auf einen Spaltenheader klickt.
public:
event System::Windows::Forms::DataGridViewCellMouseEventHandler ^ ColumnHeaderMouseClick;
public event System.Windows.Forms.DataGridViewCellMouseEventHandler ColumnHeaderMouseClick;
public event System.Windows.Forms.DataGridViewCellMouseEventHandler? ColumnHeaderMouseClick;
member this.ColumnHeaderMouseClick : System.Windows.Forms.DataGridViewCellMouseEventHandler
Public Custom Event ColumnHeaderMouseClick As DataGridViewCellMouseEventHandler
Ereignistyp
Beispiele
Wenn in einer DataGridViewauf eine Spaltenüberschrift geklickt wird, besteht das Standardverhalten darin, die Rasterzeilen basierend auf der angeklickten Spalte zu sortieren oder die Sortierreihenfolge umzukehren, wenn das Raster bereits nach der angeklickten Spalte sortiert ist. Im folgenden Codebeispiel wird veranschaulicht, wie dieses Ereignis zum Ausführen einer programmgesteuerten Sortierung verwendet wird, die das Standardverhalten des Klickens auf eine DataGridViewColumnHeaderCell emuliert, wenn das Standardverhalten deaktiviert wurde. In diesem Beispiel ist der SelectionMode auf ColumnHeaderSelectfestgelegt, sodass durch Klicken auf den DataGridViewColumnHeaderCell der Inhalt der Spalte ausgewählt wird. Damit der Beispielcode wie vorgesehen funktioniert, muss das standardmäßige Spaltenheaderkverhalten jedes Mal geändert werden, wenn die Daten in den DataGridViewgeladen werden. Fügen Sie einen DataBindingComplete Ereignishandler hinzu, um den Code bereitzustellen, der das Standardverhalten ändert. Fügen Sie zum Ausführen dieses Beispiels den Code in ein Formular ein, das einen DataGridView benannten dataGridView1
enthält, und stellen Sie sicher, dass alle Ereignisse ihren Ereignishandlern zugeordnet sind.
private void dataGridView1_ColumnHeaderMouseClick(
object sender, DataGridViewCellMouseEventArgs e)
{
DataGridViewColumn newColumn = dataGridView1.Columns[e.ColumnIndex];
DataGridViewColumn oldColumn = dataGridView1.SortedColumn;
ListSortDirection direction;
// If oldColumn is null, then the DataGridView is not sorted.
if (oldColumn != null)
{
// Sort the same column again, reversing the SortOrder.
if (oldColumn == newColumn &&
dataGridView1.SortOrder == SortOrder.Ascending)
{
direction = ListSortDirection.Descending;
}
else
{
// Sort a new column and remove the old SortGlyph.
direction = ListSortDirection.Ascending;
oldColumn.HeaderCell.SortGlyphDirection = SortOrder.None;
}
}
else
{
direction = ListSortDirection.Ascending;
}
// Sort the selected column.
dataGridView1.Sort(newColumn, direction);
newColumn.HeaderCell.SortGlyphDirection =
direction == ListSortDirection.Ascending ?
SortOrder.Ascending : SortOrder.Descending;
}
private void dataGridView1_DataBindingComplete(object sender,
DataGridViewBindingCompleteEventArgs e)
{
// Put each of the columns into programmatic sort mode.
foreach (DataGridViewColumn column in dataGridView1.Columns)
{
column.SortMode = DataGridViewColumnSortMode.Programmatic;
}
}
Private Sub dataGridView1_ColumnHeaderMouseClick(ByVal sender As Object, _
ByVal e As DataGridViewCellMouseEventArgs) _
Handles dataGridView1.ColumnHeaderMouseClick
Dim newColumn As DataGridViewColumn = _
dataGridView1.Columns(e.ColumnIndex)
Dim oldColumn As DataGridViewColumn = dataGridView1.SortedColumn
Dim direction As ListSortDirection
' If oldColumn is null, then the DataGridView is not currently sorted.
If oldColumn IsNot Nothing Then
' Sort the same column again, reversing the SortOrder.
If oldColumn Is newColumn AndAlso dataGridView1.SortOrder = _
SortOrder.Ascending Then
direction = ListSortDirection.Descending
Else
' Sort a new column and remove the old SortGlyph.
direction = ListSortDirection.Ascending
oldColumn.HeaderCell.SortGlyphDirection = SortOrder.None
End If
Else
direction = ListSortDirection.Ascending
End If
' Sort the selected column.
dataGridView1.Sort(newColumn, direction)
If direction = ListSortDirection.Ascending Then
newColumn.HeaderCell.SortGlyphDirection = SortOrder.Ascending
Else
newColumn.HeaderCell.SortGlyphDirection = SortOrder.Descending
End If
End Sub
Private Sub dataGridView1_DataBindingComplete(ByVal sender As Object, _
ByVal e As DataGridViewBindingCompleteEventArgs) _
Handles dataGridView1.DataBindingComplete
' Put each of the columns into programmatic sort mode.
For Each column As DataGridViewColumn In dataGridView1.Columns
column.SortMode = DataGridViewColumnSortMode.Programmatic
Next
End Sub
Hinweise
Weitere Informationen zum Behandeln von Ereignissen finden Sie unter behandeln und Auslösen von Ereignissen.