Domyślne zachowanie klawiatury i myszy za pomocą kontrolki DataGridView

W poniższych tabelach opisano, jak użytkownicy mogą wchodzić w interakcje z DataGridView kontrolką za pomocą klawiatury i myszy.

Uwaga

Aby dostosować zachowanie klawiatury, można obsługiwać standardowe zdarzenia klawiatury, takie jak KeyDown. Jednak w trybie edycji hostowana kontrolka edycji odbiera dane wejściowe klawiatury, a zdarzenia klawiatury nie występują dla kontrolki DataGridView . Aby obsłużyć edytowanie zdarzeń sterowania, dołącz programy obsługi do kontrolki edycji w procedurze obsługi zdarzeń EditingControlShowing . Alternatywnie można dostosować zachowanie klawiatury w podklasie DataGridView , zastępując ProcessDialogKey metody i ProcessDataGridViewKey .

Domyślna obsługa klawiatury

Podstawowe klucze nawigacji i wprowadzania

Klawisz lub kombinację klawiszy opis
Strzałka Przenosi fokus do komórki bezpośrednio poniżej bieżącej komórki. Jeśli fokus znajduje się w ostatnim wierszu, nic nie robi.
Strzałka w lewo Przenosi fokus do poprzedniej komórki w wierszu. Jeśli fokus znajduje się w pierwszej komórce w wierszu, nic nie robi.
Strzałka w prawo Przenosi fokus do następnej komórki w wierszu. Jeśli fokus znajduje się w ostatniej komórce w wierszu, nic nie robi.
Strzałka w górę Przenosi fokus do komórki bezpośrednio nad bieżącą komórką. Jeśli fokus znajduje się w pierwszym wierszu, nic nie robi.
Strona główna Przenosi fokus do pierwszej komórki w bieżącym wierszu.
Zakończenie Przenosi fokus do ostatniej komórki w bieżącym wierszu.
Strona w dół Przewija kontrolkę w dół przez liczbę w pełni wyświetlanych wierszy. Przenosi fokus do ostatniego w pełni wyświetlanego wiersza bez zmieniania kolumn.
Strona w górę Przewija kontrolkę w górę przez liczbę w pełni wyświetlanych wierszy. Przenosi fokus do pierwszego wyświetlanego wiersza bez zmieniania kolumn.
Tab StandardTab Jeśli wartość właściwości to false, przenosi fokus do następnej komórki w bieżącym wierszu. Jeśli fokus znajduje się już w ostatniej komórce wiersza, przenosi fokus do pierwszej komórki w następnym wierszu. Jeśli fokus znajduje się w ostatniej komórce w kontrolce, przenosi fokus do następnej kontrolki w kolejności tabulatora kontenera nadrzędnego.

StandardTab Jeśli wartość właściwości to true, przenosi fokus do następnej kontrolki w kolejności tabulacji kontenera nadrzędnego.
Shift Tab + StandardTab Jeśli wartość właściwości to false, przenosi fokus do poprzedniej komórki w bieżącym wierszu. Jeśli fokus znajduje się już w pierwszej komórce wiersza, przenosi fokus do ostatniej komórki w poprzednim wierszu. Jeśli fokus znajduje się w pierwszej komórce w kontrolce, przenosi fokus do poprzedniej kontrolki w kolejności tabulatora kontenera nadrzędnego.

StandardTab Jeśli wartość właściwości to true, przenosi fokus do poprzedniej kontrolki w kolejności tabulacji kontenera nadrzędnego.
Ctrl + Tab StandardTab Jeśli wartość właściwości to false, przenosi fokus do następnej kontrolki w kolejności tabulacji kontenera nadrzędnego.

StandardTab Jeśli wartość właściwości to true, przenosi fokus do następnej komórki w bieżącym wierszu. Jeśli fokus znajduje się już w ostatniej komórce wiersza, przenosi fokus do pierwszej komórki w następnym wierszu. Jeśli fokus znajduje się w ostatniej komórce w kontrolce, przenosi fokus do następnej kontrolki w kolejności tabulatora kontenera nadrzędnego.
Ctrl + Shift + Tab StandardTab Jeśli wartość właściwości to false, przenosi fokus do poprzedniej kontrolki w kolejności tabulacji kontenera nadrzędnego.

StandardTab Jeśli wartość właściwości to true, przenosi fokus do poprzedniej komórki w bieżącym wierszu. Jeśli fokus znajduje się już w pierwszej komórce wiersza, przenosi fokus do ostatniej komórki w poprzednim wierszu. Jeśli fokus znajduje się w pierwszej komórce w kontrolce, przenosi fokus do poprzedniej kontrolki w kolejności tabulatora kontenera nadrzędnego.
Ctrl + strzałka Przenosi fokus do najdalejszej komórki w kierunku strzałki.
Ctrl + Strona główna Przenosi fokus do pierwszej komórki w kontrolce.
Ctrl + Koniec Przenosi fokus do ostatniej komórki w kontrolce.
Ctrl Page down/up (Strzałka + w dół/w górę) Tak samo jak Strona w dół lub Strona w górę.
F2 Umieszcza bieżącą komórkę w trybie edycji komórki, jeśli EditMode wartość właściwości to EditOnF2 lub EditOnKeystrokeOrF2.
F3 Sortuje bieżącą kolumnę, jeśli DataGridViewColumn.SortMode wartość właściwości to Automatic. To samo, co kliknięcie bieżącego nagłówka kolumny. Dostępne od programu .NET Framework 4.7.2. Aby włączyć tę funkcję, aplikacje muszą być przeznaczone dla platformy .NET Framework 4.7.2 lub nowszej albo jawnie zdecydować się na ulepszenia ułatwień dostępu przy użyciu przełączników AppContext.
F4 Jeśli bieżąca komórka to DataGridViewComboBoxCell, umieszcza komórkę w trybie edycji i wyświetla listę rozwijaną.
Alt + Strzałka w górę/w dół Jeśli bieżąca komórka to DataGridViewComboBoxCell, umieszcza komórkę w trybie edycji i wyświetla listę rozwijaną.
Alt + Strzałka w lewo/w prawo Zwiększa lub zmniejsza szerokość kolumny bieżącej komórki.
Space Jeśli bieżąca komórka to DataGridViewButtonCell, DataGridViewLinkCelllub DataGridViewCheckBoxCell, zgłasza CellClick zdarzenia i CellContentClick . Jeśli bieżąca DataGridViewButtonCellkomórka to , naciśnie również przycisk . Jeśli bieżąca komórka to DataGridViewCheckBoxCell, również zmienia stan sprawdzania.
Wprowadź Zatwierdza wszelkie zmiany w bieżącej komórce i wierszu i przenosi fokus do komórki bezpośrednio poniżej bieżącej komórki. Jeśli fokus znajduje się w ostatnim wierszu, zatwierdza wszelkie zmiany bez przenoszenia fokusu.
Esc Jeśli kontrolka jest w trybie edycji, anuluje edycję. Jeśli kontrolka nie jest w trybie edycji, przywraca wszelkie zmiany wprowadzone w bieżącym wierszu, jeśli kontrolka jest powiązana ze źródłem danych obsługującym edytowanie lub tryb wirtualny został zaimplementowany z zakresem zatwierdzania na poziomie wiersza.
Backspace Usuwa znak przed punktem wstawiania podczas edytowania komórki.
Usuwanie Usuwa znak po punkcie wstawiania podczas edytowania komórki.
Ctrl + Enter Zatwierdza wszelkie zmiany w bieżącej komórce bez przenoszenia fokusu. Zatwierdza również wszelkie zmiany w bieżącym wierszu, jeśli kontrolka jest powiązana ze źródłem danych obsługującym edycję lub trybem wirtualnym została zaimplementowana z zakresem zatwierdzania na poziomie wiersza.
Ctrl + 0 DBNull.Value Wprowadza wartość do bieżącej komórki, jeśli można edytować komórkę. Domyślnie wartość wyświetlana dla DBNull wartości komórki jest wartością NullValue właściwości DataGridViewCellStyle obowiązującej dla bieżącej komórki.

Klucze wyboru

MultiSelect Jeśli właściwość jest ustawiona na false , a SelectionMode właściwość jest ustawiona na CellSelect, zmiana bieżącej komórki przy użyciu kluczy nawigacji spowoduje zmianę zaznaczenia na nową komórkę. Klawisze Shift, Ctrl i Alt nie mają wpływu na to zachowanie.

SelectionMode Jeśli właściwość jest ustawiona na RowHeaderSelect lub ColumnHeaderSelect, takie samo zachowanie występuje, ale z następującymi dodatkami.

Klawisz lub kombinację klawiszy opis
Shift Spacja + Wybiera pełny wiersz lub kolumnę (tak samo jak kliknięcie nagłówka wiersza lub kolumny).
klawisz nawigacji (klawisz strzałki, strona w górę/w dół, strona główna, koniec) Jeśli zaznaczono pełny wiersz lub kolumnę, zmiana bieżącej komórki na nowy wiersz lub kolumnę powoduje przeniesienie zaznaczenia do pełnego nowego wiersza lub kolumny (w zależności od trybu zaznaczenia).

Jeśli MultiSelect jest ustawiona wartość i SelectionMode jest ustawiona false na FullRowSelect lub FullColumnSelect, zmiana bieżącej komórki na nowy wiersz lub kolumnę przy użyciu klawiatury przenosi zaznaczenie do pełnego nowego wiersza lub kolumny. Klawisze Shift, Ctrl i Alt nie mają wpływu na to zachowanie.

Jeśli MultiSelect jest ustawiona truewartość , zachowanie nawigacji nie zmieni się, ale nawigowanie za pomocą klawiatury podczas naciśnięcia klawisza Shift (w tym Ctrl + Shift) spowoduje zmodyfikowanie zaznaczenia wielokomórkowego. Przed rozpoczęciem nawigacji kontrolka oznacza bieżącą komórkę jako komórkę zakotwiczenia. Podczas nawigowania po naciśnięciu klawisza Shift zaznaczenie zawiera wszystkie komórki między komórką kotwicy a bieżącą komórką. Inne komórki w kontrolce pozostaną zaznaczone, jeśli zostały już wybrane, ale mogą stać się niezaznaczone, jeśli nawigacja za pomocą klawiatury tymczasowo umieszcza je między komórką kotwicy a bieżącą komórką.

Jeśli MultiSelect jest ustawiona wartość i SelectionMode jest ustawiona true na FullRowSelect lub FullColumnSelect, zachowanie komórki kotwicy i bieżącej komórki jest takie samo, ale tylko pełne wiersze lub kolumny stają się zaznaczone lub niezaznaczone.

Domyślna obsługa myszy

Podstawowa obsługa myszy

Uwaga

Kliknięcie komórki za pomocą lewego przycisku myszy zawsze zmienia bieżącą komórkę. Kliknięcie komórki prawym przyciskiem myszy powoduje otwarcie menu skrótów, gdy jest dostępny.

Akcja myszy opis
Lewy przycisk myszy w dół Powoduje, że klikniętą komórkę jest bieżąca komórka i zgłasza DataGridView.CellMouseDown zdarzenie.
Lewy przycisk myszy w górę DataGridView.CellMouseUp Wywołuje zdarzenie
Kliknij lewym przyciskiem myszy Wywołuje zdarzenia DataGridView.CellClick i DataGridView.CellMouseClick
Lewy przycisk myszy w dół i przeciągnij na komórkę nagłówka kolumny DataGridView.AllowUserToOrderColumns Jeśli właściwość ma truewartość , przenosi kolumnę, aby można ją było porzucić w nowej pozycji.

Wybór myszy

Żadne zachowanie wyboru nie jest skojarzone z środkowym przyciskiem myszy lub kółkiem myszy.

Jeśli właściwość jest ustawiona MultiSelect na false , a SelectionMode właściwość jest ustawiona na CellSelect, występuje następujące zachowanie.

Akcja myszy opis
Kliknij pozycję Wybiera tylko bieżącą komórkę, jeśli użytkownik kliknie komórkę. Brak zachowania wyboru, jeśli użytkownik kliknie nagłówek wiersza lub kolumny.
Kliknij prawym przyciskiem myszy pozycję Wyświetla menu skrótów, jeśli jest dostępny.

To samo zachowanie występuje, gdy SelectionMode właściwość jest ustawiona na RowHeaderSelect lub ColumnHeaderSelect, z tą różnicą, że w zależności od trybu zaznaczenia kliknięcie nagłówka wiersza lub kolumny spowoduje wybranie pełnego wiersza lub kolumny i ustawienie bieżącej komórki na pierwszą komórkę w wierszu lub kolumnie.

Jeśli SelectionMode ustawiono wartość FullRowSelect lub FullColumnSelect, kliknięcie dowolnej komórki w wierszu lub kolumnie spowoduje wybranie pełnego wiersza lub kolumny.

Jeśli MultiSelect jest ustawiona wartość true, kliknięcie komórki przy naciśnięciu klawisza Ctrl lub Shift spowoduje zmodyfikowanie zaznaczenia wielokomórkowego.

Po kliknięciu komórki przy naciśnięciu klawisza Ctrl komórka zmieni jego stan zaznaczenia, podczas gdy wszystkie pozostałe komórki zachowują bieżący stan zaznaczenia.

Po kliknięciu komórki lub serii komórek przy naciśnięciu klawisza Shift zaznaczenie zawiera wszystkie komórki między bieżącą komórką a komórką zakotwiczenia znajdującą się w pozycji bieżącej komórki przed pierwszym kliknięciem. Po kliknięciu i przeciągnięciu wskaźnika w wielu komórkach komórka kotwicy jest komórką klikniętą na początku operacji przeciągania. Kolejne kliknięcia po naciśnięciu klawisza Shift zmieniają bieżącą komórkę, ale nie komórkę kotwicy. Inne komórki w kontrolce pozostaną zaznaczone, jeśli zostały już wybrane, ale mogą stać się niezaznaczone, jeśli nawigacja myszy tymczasowo umieszcza je między komórką kotwicy a bieżącą komórką.

Jeśli MultiSelect jest ustawiona wartość i SelectionMode jest ustawiona true na RowHeaderSelect lub ColumnHeaderSelect, kliknięcie nagłówka wiersza lub kolumny (w zależności od trybu zaznaczenia) przy naciśnięciu klawisza Shift spowoduje zmodyfikowanie istniejącego zaznaczenia pełnych wierszy lub kolumn, jeśli taki wybór istnieje. W przeciwnym razie wyczyści zaznaczenie i rozpocznie nowy wybór pełnych wierszy lub kolumn. Kliknięcie nagłówka wiersza lub kolumny przy naciśnięciu klawisza Ctrl spowoduje jednak dodanie lub usunięcie klikniętego wiersza lub kolumny z bieżącego zaznaczenia bez modyfikowania bieżącego zaznaczenia.

Jeśli MultiSelect jest ustawiona wartość i SelectionMode jest ustawiona true na FullRowSelect lub FullColumnSelect, kliknięcie komórki przy naciśnięciu klawisza Shift lub Ctrl zachowuje się w taki sam sposób, z wyjątkiem tego, że dotyczy to tylko pełnych wierszy i kolumn.

Zobacz też