Chcę ustawić różne menu kontekstowe dla komórek datagridview, rowheaders i columnheaders. Chodzi o to, że po kliknięciu prawym przyciskiem myszy dowolnego z tych elementów wyświetlane jest inne menu kontekstowe. Jak mam to zrobic?menu kontekstowe dla komórki datagridview, rowheader i columnheader
Odpowiedz
Użyj zdarzenia DataGridView o numerze MouseDown
, aby sprawdzić, czy kliknięto prawą mysz, a jeśli tak, użyj powiązanej właściwości HitTestInfo
, aby określić, czy kliknięto komórkę, wiersz lub kolumnę. Użyj tych informacji, aby wyświetlić ContextMenuStrip, którego potrzebujesz.
Oto przykład zdarzenia, które to robi. Aby wypróbować próbkę upuść DataGridView i trzy ContentMenuStrips na formularzu. Nazwij ContentMenuStrips mnuCell, mnuRow i mnuColumn.
Private Sub DataGridView1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseDown
If e.Button = Windows.Forms.MouseButtons.Right Then
Dim ht As DataGridView.HitTestInfo
ht = Me.DataGridView1.HitTest(e.X, e.Y)
If ht.Type = DataGridViewHitTestType.Cell Then
DataGridView1.ContextMenuStrip = mnuCell
mnuCell.Items(0).Text = String.Format("This is the cell at {0}, {1}", ht.ColumnIndex, ht.RowIndex)
ElseIf ht.Type = DataGridViewHitTestType.RowHeader Then
DataGridView1.ContextMenuStrip = mnuRow
mnuRow.Items(0).Text = "This is row " + ht.RowIndex.ToString()
ElseIf ht.Type = DataGridViewHitTestType.ColumnHeader Then
DataGridView1.ContextMenuStrip = mnuColumn
mnuColumn.Items(0).Text = "This is col " + ht.ColumnIndex.ToString()
End If
End If
End Sub
Tutaj jestem przypisanie własności ContextMenuStrip DataGridView jest do odpowiedniego ContextMenuStrip dla elementu kliknięciu prawym przyciskiem myszy (komórki, wiersza lub kolumny). Aby zademonstrować, jak możesz dalej dostosować zachowanie ContextMenuStrips, ustawiam również tekst w każdym punkcie menu ContentMenuStrips.
W zdarzeniu MouseDown w DataGridView należy użyć metody DataGridView.HitTest, aby sprawdzić, co zostało kliknięte. Następnie możesz przełączać menu kontekstowe w zależności od kliknięcia.
- 1. Menu HTML5 - Kontekstowe menu kontekstowe
- 2. PyQt i menu kontekstowe
- 3. Menu kontekstowe w WPF
- 4. Menu kontekstowe z ListFragment
- 5. Nieklikalne menu kontekstowe Nagłówek
- 6. Menu kontekstowe w MVVM
- 7. Menu kontekstowe pozycjonowania
- 8. Dostosowywanie menu kontekstowego, takiego jak menu kontekstowe
- 9. Zapętlanie przez komórki DataGridView
- 10. Menu kontekstowe jquery wyłącz elementy menu
- 11. Sprawdzanie poprawności DataGridView i zmiana wartości komórki
- 12. Menu kontekstowe w Android WebView
- 13. Okna menu kontekstowe powłoki ikona
- 14. Wyświetl menu kontekstowe z kodem
- 15. Usuń menu kontekstowe w TinyMCE
- 16. Jak stworzyć Menu kontekstowe jako podmenu pozycji menu innego Menu kontekstowe w
- 17. Dynamiczne zmienianie koloru komórki datagridview
- 18. Komórki DataGridView tylko do odczytu
- 19. Menu kontekstowe prawego przycisku myszy na QPushButton
- 20. Menu kontekstowe paska narzędzi przeglądarki Internet Explorer
- 21. Co to jest "menu kontekstowe" i metoda registerForContextMenu()
- 22. Menu kontekstowe Menu Element DataContext zwraca stare elementy
- 23. Utwórz niestandardowy element w jsTree Menu kontekstowe
- 24. Jak poprawnie ustawić menu kontekstowe po kliknięciu prawym przyciskiem myszy nagłówka kolumny DataGridView?
- 25. Menu kontekstowe w zagnieżdżonym elemencie podrzędnym również pokazuje nadrzędne menu kontekstowe.
- 26. Menu kontekstowe w DataTemplate Binding issue
- 27. warunkowa zmiana koloru tła i tekstu komórki datagridview
- 28. Jak zmodyfikować menu kontekstowe w CKEditorze?
- 29. Dlaczego moje menu kontekstowe vspakażu nie pokazuje
- 30. Google Maps usuwa menu kontekstowe znacznika trasy
dzięki, mam trzy menu kontekstowe, jedno dla wiersza, kolumny i komórki. Ustawiłem menu kontekstowe wiersza w tym wierszu '" To jest wiersz "', i wyłącz pozostałe dwa nadal pokazuje ono dla, ale pokazuje menu kontekstowe wiersza po kliknięciu komórki. – Smith
@Smith Zaktualizowałem mój przykład o to, co myślę, że potrzebujesz. –