Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Включить полосы прокрутки ListView / 5 сообщений из 5, страница 1 из 1
09.12.2008, 15:17
    #35702943
new
new
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Включить полосы прокрутки ListView
Подскажите плиз как включить полосы прокрутки контрола ListView, когда он еще не заполнен элементами, например при загрузке формы.
...
Рейтинг: 0 / 0
09.12.2008, 16:34
    #35703293
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Включить полосы прокрутки ListView
Код: 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
09.12.2008, 17:12
    #35703434
new
new
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Включить полосы прокрутки ListView
Честно говоря плохо понял принцип. У меня просто периодически сбивается область видимости крайнего столбца из-за того что вертикальная полоса прокрутки то появляется то исчезает в зависимости от кол-ва строк, и я хотел бы установить ее всегда принудительно.
Нашел:
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
09.12.2008, 17:31
    #35703498
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Включить полосы прокрутки ListView
Какой вопрос такой был и ответ. При загрузке формы приведенный пример показывает скрул.
Автоподбор ширины колонок не знаю как сделать - не разбирался, узнаете - напишите.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
27.12.2012, 00:56
    #38094293
jsofthome1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Включить полосы прокрутки ListView
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
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Включить полосы прокрутки ListView / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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