Проблемы с пробелами в элементе управления ListView - PullRequest
1 голос
/ 17 февраля 2011

У меня есть стандартный ListView элемент управления в проекте Windows Forms VB.Net. Вид установлен на Плитку. Пользователи сообщают, что видят следующее:

ListView spacing problem in Tile mode

Вы знаете, как я мог решить проблему? Все проектные работы были выполнены с использованием VS 2010.

1 Ответ

5 голосов
/ 18 февраля 2011

Да, это произойдет, если вы изменили свойство TileSize представления списка и ваша программа запускается на компьютере с более высоким значением DPI для видео. Это сделает шрифты больше. Причинение текста больше не вписывается в плитку. Все остальное обеспечивается автоматическим масштабированием, встроенным в класс Form.

Вы должны масштабировать размер плитки, увеличивая ее так, чтобы текст снова помещался. Сделайте так, чтобы это выглядело примерно так:

Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
    MyBase.OnLoad(e)
    Using gr = Me.CreateGraphics
        Dim tile As New Size( _
          CInt(Me.ListView1.TileSize.Width * gr.DpiX / 96), _
          CInt(Me.ListView1.TileSize.Height * gr.DpiY / 96))
        ListView1.TileSize = tile
    End Using
End Sub

Предполагается, что вы разработали форму на машине с настройкой по умолчанию 96 точек на дюйм. Оставьте немного провисания в исходном размере плитки, масштабирование не идеальное из-за подсказки TrueType.

...