2009-10-13 4 views
1

Я пытаюсь получить мою голову вокруг этого поведения: У меня есть ListView на форме в LargeIcon View (System.Windows.Forms.View.LargeIcon)Странная .NET ListView поведение

Эта строка в конструкторе:

this.listView1.LargeImageList.ImageSize = new Size(32, 32); 

а затем эта функция вызывается при двойном щелчке:

private void listView1_DoubleClick(object sender, EventArgs e) 
{ 
    this.listView1.LargeImageList.ImageSize = new Size(64, 64); 
} 

При двойном щелчке на ListView, изменения размера, как и ожидалось, но значок у меня отнимается, и я просто получить би пробел. Даже если я установил ImageIndex для использования впоследствии, он останется пустым, и я не могу заставить его отображать его снова.

Я предполагаю, что я делаю что-то неправильно (хотя я думаю, что .NET может быть сломан). Что я могу изменить, чтобы значок не исчез?

(я в .NET 2.0)

+0

Полагаю, у вас есть значок соответствующего размера? (64, 64)? –

+0

Нет, все значки (200,200), но он работает в первую очередь для (32, 32) – Smashery

ответ

2

Я думаю, что вы работаете в этом предостережение, описанном в MSDN (http://msdn.microsoft.com/en-us/library/system.windows.forms.imagelist.imagesize.aspx):

Поскольку установка свойства IMAGESIZE заставляет дескриптор быть воссоздан, вы должны установить ImageSize перед установкой свойство Images.

Кроме того, полагаясь на систему, чтобы изменить размер изображений с 32x32 до 64x64, естественно, приводили бы к изображениям низкого качества.

+0

Да, меня не интересуют изображения низкого качества, поскольку я сейчас просто прототипирую. Более того, изображения исчезают, и я не могу заставить их отображать их снова. Похоже, что предостережение, которое вы описываете, действительно является проблемой - будет ли это означать, что я должен воссоздать набор изображений каждый раз, когда я хочу изменить размер значков? – Smashery

Смежные вопросы