Jak ustawić szerokość kolumny kontrolki C# winforms listview
na auto. Coś jak szerokość = -1/-2?C# ListView Szerokość kolumny Auto
Odpowiedz
Podałeś odpowiedź: -2 spowoduje autosize kolumny do długości tekstu w nagłówku kolumny, -1 spowoduje automatyczne dopasowanie do najdłuższego elementu w kolumnie. All according to MSDN. Zwróć jednak uwagę, że w przypadku -1, musisz ustawić szerokość kolumny po dodaniu przedmiotu (ów). Jeśli więc dodasz nowy element, musisz również przypisać właściwość width kolumny (lub kolumn), która ma być autosize zgodnie z danymi w sterowaniu ListView
.
Zrobiłem program, który wielokrotnie czyścił i uzupełniał mój listview. Z jakiegoś powodu, gdy dodawałem kolumny o szerokości = -2 napotkałem problem z zbyt długą pierwszą kolumną. Naprawiłem to, tworząc tę metodę.
private void ResizeListViewColumns(ListView lv)
{
foreach(ColumnHeader column in lv.Columns)
{
column.Width = -2;
}
}
Wspaniałą rzeczą w tej metodzie jest to, że można ją umieścić w dowolnym miejscu, aby zmienić rozmiar wszystkich kolumn. Po prostu wprowadź swój numer ListView
.
Rozwijając nieco na odpowiedź Fredrik jest, jeśli chcesz ustawić auto-resize szerokość kolumny w locie na przykład: ustawienie automatycznego pierwszej kolumnie jest -size width to 70:
myListView.Columns[0].AutoResize(ColumnHeaderAutoResizeStyle.None);
myListView.Columns[0].Width = 70;
myListView.Columns[0].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
To rozwiązanie najpierw zmieni rozmiar kolumn na podstawie danych kolumny, jeśli zmieniona szerokość jest mniejsza r niż rozmiar nagłówka, zmieni rozmiar kolumn, aby przynajmniej pasował do nagłówka. To dość brzydkie rozwiązanie, ale działa.
lstContacts.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
colFirstName.Width = (colFirstName.Width < 60 ? 60 : colFirstName.Width);
colLastName.Width = (colLastName.Width < 61 ? 61 : colLastName.Width);
colPhoneNumber.Width = (colPhoneNumber.Width < 81 ? 81 : colPhoneNumber.Width);
colEmail.Width = (colEmail.Width < 40 ? 40 : colEmail.Width);
lstContacts to ListView. colFirstName to kolumna, gdzie 60 to szerokość wymagana do dopasowania tytułu. Itd
wierzę autor szukał innej równoważnej metody poprzez IDE, który generuje kod tyłu i sprawdzić, czy wszystkie parametry były w miejscu, itd. Znalazłem to od MS:
Creating Event Handlers on the Windows Forms Designer
Jadąc od tła VB siebie, to co szukałem, tutaj jest krótka wersja do kliknięcia niekorzystnego:
- kliknij formularz lub sterowania, który y ou chcesz utworzyć obsługę zdarzeń dla.
- W oknie Właściwości kliknij przycisk Zdarzenia
- Na liście dostępnych zdarzeń kliknij wydarzenie, dla którego chcesz utworzyć procedurę obsługi zdarzeń.
- W polu po prawej stronie nazwy zdarzenia, wpisz nazwę programu obsługi i naciśnij ENTER
będzie ustawić szerokość do szerokości ostatniego elementu w ListView – Qsiris
używam kodu ale jeśli mam tylko jedną kolumnę w moim widoku listy, za każdym razem otrzymuję poziomy pasek przewijania.Jeśli istnieją co najmniej dwie kolumny, kod działa dobrze. Czy wiesz skąd pochodzi to zachowanie? – prototype0815