你确定吗?我已经让它在这个测试用例中工作了:
using System;
using System.Windows.Forms;
public class MainForm : Form
{
private System.ComponentModel.IContainer components = null;
private System.Windows.Forms.ListView listView;
private System.Windows.Forms.ImageList emptySmallImageList;
private System.Windows.Forms.ImageList largeImageList;
private System.Windows.Forms.Button imageListSmallButton;
private System.Windows.Forms.Button imageListLargeButton;
public MainForm()
{
InitializeComponent();
}
private void OnImageListSmallButtonClick(object sender, EventArgs e)
{
this.listView.LargeImageList = emptySmallImageList;
}
private void OnImageListLargeButtonClick(object sender, EventArgs e)
{
this.listView.LargeImageList = largeImageList;
}
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.Windows.Forms.ListViewItem listViewItem5 = new System.Windows.Forms.ListViewItem("fgsdfg");
System.Windows.Forms.ListViewItem listViewItem6 = new System.Windows.Forms.ListViewItem("sdfgsdfg");
System.Windows.Forms.ListViewItem listViewItem7 = new System.Windows.Forms.ListViewItem("sdfgsdfgsdfg");
System.Windows.Forms.ListViewItem listViewItem8 = new System.Windows.Forms.ListViewItem("sdfgsdfg");
this.listView = new System.Windows.Forms.ListView();
this.largeImageList = new System.Windows.Forms.ImageList(this.components);
this.emptySmallImageList = new System.Windows.Forms.ImageList(this.components);
this.imageListSmallButton = new System.Windows.Forms.Button();
this.imageListLargeButton = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// listView
//
this.listView.Dock = System.Windows.Forms.DockStyle.Fill;
this.listView.Items.AddRange(new System.Windows.Forms.ListViewItem[] {
listViewItem5,
listViewItem6,
listViewItem7,
listViewItem8});
this.listView.LargeImageList = this.largeImageList;
this.listView.Location = new System.Drawing.Point(0, 0);
this.listView.Name = "listView";
this.listView.Size = new System.Drawing.Size(292, 266);
this.listView.TabIndex = 0;
this.listView.UseCompatibleStateImageBehavior = false;
this.listView.View = System.Windows.Forms.View.Tile;
//
// largeImageList
//
this.largeImageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
this.largeImageList.ImageSize = new System.Drawing.Size(32, 32);
this.largeImageList.TransparentColor = System.Drawing.Color.Transparent;
//
// emptySmallImageList
//
this.emptySmallImageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
this.emptySmallImageList.ImageSize = new System.Drawing.Size(1, 1);
this.emptySmallImageList.TransparentColor = System.Drawing.Color.Transparent;
//
// imageListSmallButton
//
this.imageListSmallButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.imageListSmallButton.Location = new System.Drawing.Point(175, 12);
this.imageListSmallButton.Name = "imageListSmallButton";
this.imageListSmallButton.Size = new System.Drawing.Size(95, 23);
this.imageListSmallButton.TabIndex = 1;
this.imageListSmallButton.Text = "ImageList 1x1";
this.imageListSmallButton.UseVisualStyleBackColor = true;
this.imageListSmallButton.Click += new System.EventHandler(this.OnImageListSmallButtonClick);
//
// imageListLargeButton
//
this.imageListLargeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.imageListLargeButton.Location = new System.Drawing.Point(175, 53);
this.imageListLargeButton.Name = "imageListLargeButton";
this.imageListLargeButton.Size = new System.Drawing.Size(95, 23);
this.imageListLargeButton.TabIndex = 2;
this.imageListLargeButton.Text = "ImageList 32x32";
this.imageListLargeButton.UseVisualStyleBackColor = true;
this.imageListLargeButton.Click += new System.EventHandler(this.OnImageListLargeButtonClick);
//
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.Add(this.imageListLargeButton);
this.Controls.Add(this.imageListSmallButton);
this.Controls.Add(this.listView);
this.Name = "MainForm";
this.Text = "Form1";
this.ResumeLayout(false);
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
我已经完成了您现在看到的操作,我不明白为什么它不进行调整大小...我想知道执行 SendMessage 是否可以解决问题,但我不知道它会是什么消息。
如果你这样做,我可以看到最好的工作:
imageList1.ImageSize = new Size(1,1);
我创建了一个测试,除非我设置StateImageList
. 你StateImageList
也在清零吗?