powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Включить полосы прокрутки ListView
5 сообщений из 5, страница 1 из 1
Включить полосы прокрутки ListView
    #35702943
new
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
new
Гость
Подскажите плиз как включить полосы прокрутки контрола ListView, когда он еще не заполнен элементами, например при загрузке формы.
...
Рейтинг: 0 / 0
Включить полосы прокрутки ListView
    #35703293
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
Public Class Form2
   Private WithEvents timer1 As New Timer

   Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
      ListView1.View = View.Details
      ListView1.Columns.Clear()
      ListView1.Columns.Add("id",  100 , HorizontalAlignment.Center)
      ListView1.Columns.Add("Text",  200 , HorizontalAlignment.Left)
      ListView1.VirtualMode = True
      ListView1.VirtualListSize =  100 
      timer1.Interval =  3000 
      timer1.Enabled = True
   End Sub

   Private Sub timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles timer1.Tick
      timer1.Enabled = False
      LoadListView1()
   End Sub

   Private Sub LoadListView1()
      ListView1.BeginUpdate()
      ListView1.VirtualMode = False
      Dim d As DateTime = Now
      For i As Integer =  1  To  100 
         Dim li As New ListViewItem(i.ToString())
         li.SubItems.Add(d.ToString("dd.MMMM.yyyy"))
         ListView1.Items.Add(li)
         d = d.AddDays( 1 )
      Next
      ListView1.EndUpdate()
   End Sub

   Private Sub ListView1_RetrieveVirtualItem(ByVal sender As Object, ByVal e As System.Windows.Forms.RetrieveVirtualItemEventArgs) Handles ListView1.RetrieveVirtualItem
      If e.ItemIndex =  0  Then
         e.Item = New ListViewItem("Загрузка данных...")
         e.Item.SubItems.Add("")
      Else
         e.Item = New ListViewItem("")
         e.Item.SubItems.Add("")
      End If
   End Sub
End Class
...
Рейтинг: 0 / 0
Включить полосы прокрутки ListView
    #35703434
new
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
new
Гость
Честно говоря плохо понял принцип. У меня просто периодически сбивается область видимости крайнего столбца из-за того что вертикальная полоса прокрутки то появляется то исчезает в зависимости от кол-ва строк, и я хотел бы установить ее всегда принудительно.
Нашел:
Private m_ScrollBarVisible As Boolean = True
Private Const SB_VERT As Short = 1
Private Declare Function ShowScrollBar Lib "user32" (ByVal hwnd As Integer, ByVal wBar As Integer, ByVal bShow As Integer) As Integer
Обращаюсь при загрузке формы, резайза и заполнения listview. Но скрол все равно пропадает при скроллинге колесика мышки.
...
Рейтинг: 0 / 0
Включить полосы прокрутки ListView
    #35703498
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой вопрос такой был и ответ. При загрузке формы приведенный пример показывает скрул.
Автоподбор ширины колонок не знаю как сделать - не разбирался, узнаете - напишите.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Включить полосы прокрутки ListView
    #38094293
jsofthome1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Worobjoff,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
Private Const Private_LVSCW_AUTOSIZE As Long = LVSCW_AUTOSIZE
Private Const Private_LVSCW_AUTOSIZE_USEHEADER As Long = LVSCW_AUTOSIZE_USEHEADER
Private Enum ListViewColumnAutoSize
    AutoSizeUseData = Private_LVSCW_AUTOSIZE
    AutoSizeUseHeader = Private_LVSCW_AUTOSIZE_USEHEADER
End Enum


Private Sub Кнопка1_Click()
        ListViewAutoSizeColumns ListView8, AutoSizeUseData
End Sub
Private Sub Кнопка2_Click()
        ListViewAutoSizeColumns ListView8, AutoSizeUseHeader
End Sub

' устанавливает автоматический размер столбц(а/ов) объекта ListView
Private Function ListViewAutoSizeColumns(ListViewObject As Object, AutoSizeLevel As ListViewColumnAutoSize, Optional Column& = -1)
    ' lWidth param for fixed size
    Dim iReturn&
    With ListViewObject
        iReturn& = 1 ' возвращает 1 если у объекта не обнаружен хэндл
        If .hwnd Then
            iReturn& = 2 ' возвращает 2 если объект в неправильном виде
            If (.View = lvwList Or .View = lvwReport) Then
                If Column& = -1 Then ' если не указан конкретный столбец - изменяем все
                    For Column& = 0 To .Object.ColumnHeaders.Count - 1
                        Call SendMessage(.hwnd, LVM_SETCOLUMNWIDTH, Column&, ByVal AutoSizeLevel)
'for fixed size          SendMessage .hwnd, LVM_SETCOLUMNWIDTH, Column&, lWidth
                    Next
                Else ' изменяем указанный столбец
                    Call SendMessage(.hwnd, LVM_SETCOLUMNWIDTH, Column&, ByVal AutoSizeLevel)
'for fixed size       SendMessage .hwnd, LVM_SETCOLUMNWIDTH, Column&, lWidth
                End If
                iReturn& = 0 ' возвращает 0 при успехе
            End If
        End If
    End With
    ListViewAutoSizeColumns = iReturn&
End Function
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Включить полосы прокрутки ListView
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]