Я столкнулся с проблемой при написании заголовка.
Я использую ListView for File Explorer, и там много файлов изображений.
проблема, которую мне нужно решить, возникла при заменефайл изображения с тем же именем.
Вопрос:
- Я хочу заменить изображение с определенным ImageKey в ImageList.
- Для этогоЯ удаляю изображение в ImageList с помощью ImageKey.После этого я попытался добавить Image с этим ImageKey.
Примечание:
- Я использую 'File Location' в качестве ImageKey
- Я удаляю ImageKey в ImageList для замены изображения в списке.
- После того, как я попытался добавить новое изображение в ImageList (с тем же ключом), оно не вставляется.
- AddImageKey - хорошо работающая функциякоторый я использую везде.
- возвращает строку для значения 'ImageKey'.
- , если файл не является изображением, он возвращает свое расширение (например: .exe)
- , если ключевой целевой объект - каталог, он возвращает
- il16, il32, il32FullSize is ImageList
Мой код с ошибкой:
il16.Images.RemoveByKey( fi.FullName );
il32.Images.RemoveByKey( fi.FullName );
il32FullSize.Images.RemoveByKey( fi.FullName );
item.ImageKey = AddImageKey( fi.FullName, false );
Хорошо сработало MyФункция AddImageKey:
public String AddImageKey( String Location, bool IsDirectory, bool UseDefault = false )
{
String Retval = "";
if ( IsDirectory )
{
Retval = "<DIR>";
if ( !AddedExtensions.Contains( Retval ) )
{
Icon img = this.win32.GetIcon( Directory.GetCurrentDirectory().ToString(), true );
il16.Images.Add( Retval, img );
img = this.win32.GetIcon( Directory.GetCurrentDirectory().ToString(), false );
il32.Images.Add( Retval, img );
img = this.win32.GetIcon( Directory.GetCurrentDirectory().ToString(), false );
il32FullSize.Images.Add( Retval, img );
AddedExtensions.Add( Retval );
}
}
else
{
FileInfo fi = new FileInfo( Location );
try
{
if ( UseDefault )
{
throw new Exception("Use Default Icon");
}
if ( !AddedImages.Contains( fi.FullName ) )
{
Image img = Image.FromFile( fi.FullName );
il16.Images.Add( fi.FullName, img.GetThumbnailImage( 16, 16, null, new IntPtr()) );
il32.Images.Add( fi.FullName, img.GetThumbnailImage( 128, 128, null, new IntPtr() ) );
il32FullSize.Images.Add( fi.FullName, img.GetThumbnailImage( 128, 128, null, new IntPtr() ) );
img.Dispose();
AddedImages.Add( fi.FullName );
}
Retval = fi.FullName;
}
catch
{
if ( !AddedExtensions.Contains( fi.Extension ) )
{
Icon img = this.win32.GetIcon( fi.FullName, true );
il16.Images.Add( GetExt( fi.FullName ), img );
img = this.win32.GetIcon( fi.FullName, false );
il32.Images.Add( GetExt( fi.FullName ), img );
il32FullSize.Images.Add( GetExt( fi.FullName ), img );
AddedExtensions.Add( fi.Extension );
}
Retval = fi.Extension;
}
}
return Retval;
}