Я создаю бинарник:
BinaryFormatter binary = new BinaryFormatter();
using (var fs = new FileStream($"{FileName}.item", FileMode.OpenOrCreate))
{
binary.Serialize(fs, myItem);
MessageBox.Show("Succes!");
}
Как при создании этого бинарника мне задавать ему иконку?
В Windows можно установить иконку для всех файлов определенного расширения, создав ключи в реестре:
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Win32;
using System.Runtime.InteropServices;
namespace ConsoleTest
{
class Program
{
const uint SHCNE_ASSOCCHANGED = 0x08000000;
const uint SHCNF_IDLIST = 0x0000;
[DllImport("shell32.dll")]
static extern void SHChangeNotify(uint wEventId, uint uFlags, IntPtr dwItem1, IntPtr dwItem2);
public static void SetIcon(string ext, string iconpath, string typename, string typedescr)
{
RegistryKey key;
//связываем расширение с типом
key = Registry.ClassesRoot.CreateSubKey(ext);
using (key)
{
key.SetValue("", typename);
}
//задаем параметры для типа
key = Registry.ClassesRoot.CreateSubKey(typename);
using (key)
{
key.SetValue("", typedescr);
RegistryKey subkey=key.CreateSubKey("DefaultIcon");
using (subkey)
{
subkey.SetValue("", iconpath);
}
}
//обновляем кэш иконок проводника
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, IntPtr.Zero, IntPtr.Zero);
}
static void Main(string[] args)
{
SetIcon(".item", "C:\\Program Files (x86)\\MyApp\\item.ico","binitem","Binary file");
Console.ReadKey();
}
}
}
Файл иконки должен находиться либо в папке Windows, либо в папке Program Files на том же разделе, что и Windows. Если файл лежит в других папках, может не сработать. Изменить иконки на уровне отдельных файлов можно только путем создания своего расширения для проводника.
Источник: How to Assign a Custom Icon to a File Type
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Таблица заполняется рандомные цифрами и по нажатии на кнопку все столбцы должны быть отсортированы по убываниюПопробовал написать вот такой...
Пытаюсь обновить UI из другого потока, все вроде работает, но иногда ApplicationCurrent