VB.NET中如何实现ListView的Tile布局问题?

2026-05-06 09:461阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计591个文字,预计阅读时间需要3分钟。

VB.NET中如何实现ListView的Tile布局问题?

我有ListView,它显示最终的一个iTunes播放列表的专辑封面,其中包含专辑名称。我遇到的问题是,我无法获取专辑封面(目前是空白方块)。它总是显示在一边……我该怎么办?我已经尝试了...

我有一个listview,它显示(最终)一个itunes播放列表的专辑封面,其中有专辑名称.我遇到的问题是我无法获得专辑封面上的专辑封面(目前是空白方块).它总是站在一边……我该怎么做?我已经尝试添加列标题和alsorts …

用于设置列表视图的代码

VB.NET中如何实现ListView的Tile布局问题?

Dim myImageList As ImageList albumList.View = View.Tile albumList.TileSize = New Size(120, 150) ' Initialize the item icons. myImageList = New ImageList() myImageList.Images.Add(Image.FromFile("c:/test.jpg")) myImageList.ImageSize = New Size(80, 80) albumList.LargeImageList = myImageList

然后我做一个循环来显示使用的每个专辑名称

Dim item0 As New ListViewItem(New String() _ {Albums(i).Name}, 0) albumList.Items.Add(item0)

输出是i111.photobucket.com/albums/n122/mfacer/Screenshot2010-05-02at164815.png

但正如我所说,我希望专辑名称在橙色框下面….

有任何想法吗??
感谢您的任何信息!

这是瓷砖视图的烘焙安排.如果您想要图像下方的标签,则必须设置View = LargeIcon.如果这会产生不需要的图像间距,那么您可以通过P / Invoke SendMessage()发送LVM_SETICONSPACING消息.这很好用:

using System; using System.Drawing; using System.Windows.Forms; using System.Runtime.InteropServices; class TileView : ListView { public TileView() { mSpacing = new Size(48, 48); } private Size mSpacing; public Size IconSpacing { get { return mSpacing; } set { mSpacing = value; updateSpacing(); } } protected override void OnHandleCreated(EventArgs e) { base.OnHandleCreated(e); updateSpacing(); } private void updateSpacing() { if (this.IsHandleCreated) { SendMessage(this.Handle, 0x1000 + 53, IntPtr.Zero, (IntPtr)((mSpacing.Height << 16) | mSpacing.Width)); } } [DllImport("user32.dll")] private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp); }

更改设计器中的新IconSpacing属性,以便与ImageList中的图像大小配合使用.你会立即看到效果.

Public Class TileView Inherits ListView Public Sub New() mSpacing = New Size(48, 48) End Sub Private mSpacing As Size Public Property IconSpacing As Size Get Return mSpacing End Get Set(ByVal value As Size) mSpacing = value updateSpacing() End Set End Property Protected Overrides Sub OnHandleCreated(ByVal e As System.EventArgs) MyBase.OnHandleCreated(e) updateSpacing() End Sub Private Sub updateSpacing() If Me.IsHandleCreated Then SendMessageW(Me.Handle, &H1000 + 53, IntPtr.Zero, CType((mSpacing.Height << 16) Or mSpacing.Width, IntPtr)) End If End Sub Private Declare Function SendMessageW Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wp As IntPtr, ByVal lp As IntPtr) As IntPtr End Class

本文共计591个文字,预计阅读时间需要3分钟。

VB.NET中如何实现ListView的Tile布局问题?

我有ListView,它显示最终的一个iTunes播放列表的专辑封面,其中包含专辑名称。我遇到的问题是,我无法获取专辑封面(目前是空白方块)。它总是显示在一边……我该怎么办?我已经尝试了...

我有一个listview,它显示(最终)一个itunes播放列表的专辑封面,其中有专辑名称.我遇到的问题是我无法获得专辑封面上的专辑封面(目前是空白方块).它总是站在一边……我该怎么做?我已经尝试添加列标题和alsorts …

用于设置列表视图的代码

VB.NET中如何实现ListView的Tile布局问题?

Dim myImageList As ImageList albumList.View = View.Tile albumList.TileSize = New Size(120, 150) ' Initialize the item icons. myImageList = New ImageList() myImageList.Images.Add(Image.FromFile("c:/test.jpg")) myImageList.ImageSize = New Size(80, 80) albumList.LargeImageList = myImageList

然后我做一个循环来显示使用的每个专辑名称

Dim item0 As New ListViewItem(New String() _ {Albums(i).Name}, 0) albumList.Items.Add(item0)

输出是i111.photobucket.com/albums/n122/mfacer/Screenshot2010-05-02at164815.png

但正如我所说,我希望专辑名称在橙色框下面….

有任何想法吗??
感谢您的任何信息!

这是瓷砖视图的烘焙安排.如果您想要图像下方的标签,则必须设置View = LargeIcon.如果这会产生不需要的图像间距,那么您可以通过P / Invoke SendMessage()发送LVM_SETICONSPACING消息.这很好用:

using System; using System.Drawing; using System.Windows.Forms; using System.Runtime.InteropServices; class TileView : ListView { public TileView() { mSpacing = new Size(48, 48); } private Size mSpacing; public Size IconSpacing { get { return mSpacing; } set { mSpacing = value; updateSpacing(); } } protected override void OnHandleCreated(EventArgs e) { base.OnHandleCreated(e); updateSpacing(); } private void updateSpacing() { if (this.IsHandleCreated) { SendMessage(this.Handle, 0x1000 + 53, IntPtr.Zero, (IntPtr)((mSpacing.Height << 16) | mSpacing.Width)); } } [DllImport("user32.dll")] private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp); }

更改设计器中的新IconSpacing属性,以便与ImageList中的图像大小配合使用.你会立即看到效果.

Public Class TileView Inherits ListView Public Sub New() mSpacing = New Size(48, 48) End Sub Private mSpacing As Size Public Property IconSpacing As Size Get Return mSpacing End Get Set(ByVal value As Size) mSpacing = value updateSpacing() End Set End Property Protected Overrides Sub OnHandleCreated(ByVal e As System.EventArgs) MyBase.OnHandleCreated(e) updateSpacing() End Sub Private Sub updateSpacing() If Me.IsHandleCreated Then SendMessageW(Me.Handle, &H1000 + 53, IntPtr.Zero, CType((mSpacing.Height << 16) Or mSpacing.Width, IntPtr)) End If End Sub Private Declare Function SendMessageW Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wp As IntPtr, ByVal lp As IntPtr) As IntPtr End Class