Как удалить пространство значков после нулевого свойства SmallImageList ListView - PullRequest
3 голосов
/ 06 июля 2010

Проблема в том, что когда SmallImageList установлен в imgList1, он никогда не будет «освобождает» интервал между значками, даже если для параметра SmallImageList задано значение NULL. Элемент всегда имеет одинаковый отступ, независимо от того, есть значок или нет.

любое решение?

Ответы [ 2 ]

4 голосов
/ 06 июля 2010

Это необычная вещь, оболочка .NET ListView не справится с этим.Вы можете попробовать воссоздать собственный элемент управления Windows, чтобы сбросить его.Не уверен, что это будет иметь побочные эффекты, вам придется попробовать.Добавьте новый класс в ваш проект и вставьте код, показанный ниже.Компиляция.Удалите новый элемент управления с верхней части панели инструментов, заменив свой оригинальный.

using System;
using System.Windows.Forms;

class MyListView : ListView {
    public new ImageList SmallImageList {
        get { return base.SmallImageList; }
        set {
            base.SmallImageList = value;
            if (value == null && base.IsHandleCreated) this.RecreateHandle();
        }
    }
}
0 голосов
/ 16 апреля 2013

Спасибо Гансу за решение.Код ниже следует его примеру, но вызывает метод RecreateHandle с использованием отражения.

this.listView1.SmallImageList = null;
MethodInfo mInfo = this.listView1.GetType().GetMethod(
    "RecreateHandle", BindingFlags.Instance | BindingFlags.NonPublic);
mInfo.Invoke(this.listView1, null);

HTH!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...