Рейтинг:
24
Luc Pattyn
Привет,
форма имеет свойство Icon, определяющее, какой значок может отображаться в левой части строки заголовка формы.
приложение имеет свой собственный значок, который можно указать на странице свойств проекта; щелкните правой кнопкой мыши проект в обозревателе решений, выберите вкладку приложение и найдите файл, в котором написано значок:...
Довольно часто вы хотите, чтобы ваша основная форма (или даже все формы) приложения отображала тот же значок, что и само приложение (например, на панели задач), что требует двух отдельных операций.
:)
Choroid
Люк я сделал это Правой Кнопкой Мыши проект > Свойства > приложение > Обзор теперь у меня есть значок в плохо названной папке ресурсы выбрали его и все что я вижу это значок по умолчанию
Luc Pattyn
Значки всегда были немного хитрыми. Они эволюционировали от одного изображения к набору различных размеров и глубины цвета. Тот, который используется кнопкой панели задач, будет отличаться от того, который используется проводником рабочего стола (который сам зависит от некоторых вариантов выбора размеров значков на рабочем столе) и т. д.
Я обычно предоставляю файл значков, который содержит только значок 32*32 пикселя, и я использую его как для форм (в WinForms), так и для приложений, обычно это хорошо работает для меня. Если вы чувствуете необходимость наполнить несколько размеров/глубин в одном ico, убедитесь, что все они выглядят примерно одинаково, иначе вас ждут сюрпризы. Чего вам определенно не следует делать, так это брать существующий ico и заменять один из его образов, но не все из них.
AFAIK папка, в которой находится файл ico, на самом деле не имеет значения; что может быть релевантным, так это свойства, которые вы даете этому файлу ico в обозревателе решений; я склонен использовать либо "контент", либо "встроенный ресурс" (не уверен, что все это означает для значков), а также "не копировать".
Предложение: попробуйте несколько вещей, если все остальное не удается, попробуйте еще раз с файлом значков из другого источника.
:)
Choroid
Люк Паттин у меня также есть окно максимизации, установленное в True, поскольку мне сказали, что это не может быть ложным, почему так невозможно управлять заголовком? У меня есть поиск в течение 2 дней ища название элементов в заголовке
Luc Pattyn
Не спрашивайте меня, почему Microsoft сделала то, что они сделали, я не знаю, я тоже не уверен, что они это делают. :)
Я делаю это следующим образом: использую Visual Studio, открываю форму в конструкторе представлений, затем выбираю свойства и один за другим переключаю все логические значения и наблюдаю, что происходит.
Одна из самых странных вещей в Windows land заключается в том, что они предоставляют много документации в текстовой форме, но чаще всего отказываются предоставлять изображения, которые сделали бы вещи намного яснее. Ну, в конце концов, вы научитесь жить с тем, как оно есть...
:)
Choroid
Люк я действительно пробовал встроенный ресурс не повезло он всегда был настроен на контент я даже попробовал 16X16 с 8-битной глубиной не повезло можно ли отправить мне одну из ваших иконок я думаю, мне нужно разместить адрес электронной почты в комментариях, а затем удалить, как только он у вас есть
Luc Pattyn
Значок, который я использую сегодня, в настоящее время можно найти на моем веб-сайте:
https://lucpattyn.com/stationmaster.ico
Вы можете скачать его с помощью "Сохранить изображение" или как там это называется в вашем браузере.
Luc Pattyn
У меня такое чувство, что поведение Windows изменилось, вероятно, с Win10 (но может быть и раньше, я никогда этого не замечал, потому что всегда использую один и тот же значок везде в приложении).
Теперь кажется, что панель задач покажет значок, который она найдет в активной форме (основная форма или открытый модальный диалог), что, безусловно, имеет смысл, поскольку это будет зависеть от того, какая форма/диалог открыта.
Значок приложения остается актуальным, например, когда вы создаете ярлык на рабочем столе для вашего EXE-файла.
ПОДТВЕРЖДЕННЫЙ
Я создал небольшое тестовое приложение с основной формой и диалогом; приложение, основная форма и диалог-все они используют разные значки. На Win7 рабочий стол и панель задач всегда показывают значок приложения. На Win10 рабочий стол показывает значок приложения, панель задач показывает значок активной формы, то есть сначала mainform, а затем, когда я открываю диалоговое окно, панель задач показывает значок диалога.
:)
Choroid
Люк Итак, устанавливая значок в поле свойств до тех пор, пока значок находится в какой-то папке проекта, и я использую путь к этой папке, чтобы установить значок в поле свойств?
Luc Pattyn
Я так думаю; раньше я хранил свои иконки и тому подобное в верхней папке проекта; несколько лет назад я перешел на размещение таких вещей в папке ресурсов, даже когда я не всегда использую их как реальные ресурсы, в смысле
Сборка сборка=сборка.GetEntryAssembly();
использование (Stream myStream=assembly.GetManifestResourceStream(имя ресурса)) {
...
}
Рейтинг:
13
Richard MacCutchan
Я только что попробовал то же самое, и это не удалось, как вы говорите. Однако затем я дважды щелкнул форму и изменил значок в свойствах формы, и он показал правильный значок.
Что касается вашего второго вопроса, то все ресурсы, которые используются при создании приложения, встроены в конечный исполняемый файл. Таким образом, ресурсы всегда идут вместе с приложением.
Choroid
Ричард, возможно, я не был ясен, что папка, о которой я говорю, - это та, которую я создаю с именем Resources, это был плохой выбор для имени, так как я не говорю ни о какой папке в разделе Resources.resx, я должен был назвать папку Images
Richard MacCutchan
Откройте страницу свойств проекта, перейдите на вкладку ресурсы и добавьте туда значок. Это гарантирует, что он является частью окончательного исполняемого файла.
Рейтинг:
0
Choroid
Ну что ж это пинок под зад
Пост 7-летней давности на SO
[^ Ссылка ] чтобы так
Код, который я использовал
Public Sub SetIcon()
InitializeComponent()
Icon = Icon.ExtractAssociatedIcon(System.Reflection.Assembly.GetExecutingAssembly().Location)
End Sub
Он использует набор значков в разделе Обзор приложений
Да Microsoft нужно несколько новичков чтобы написать серию How to
Единственный выпуск-это каждые 3 месяца серия будет устаревать
Choroid
Люк
Для любого кто видит решение 3 я работаю только над проектом с одной формой
Если у вас есть несколько форм код запрещает переход к другим формам
Не решение если кто то хочет объяснить эту неудачу пожалуйста не стесняйтесь
Luc Pattyn
Это будет работать для любой формы, если вы поместите одну строку в ее конструктор (или обработчик загрузки):
Значок = Значок.ExtractAssociatedIcon(Система.Отражение.Собрание.GetExecutingAssembly().Местоположение)
что в основном говорит: установите значок этой формы на значок, связанный с файлом, путь к которому я вам даю, который на самом деле является вашим собственным EXE-путем. Извлечение значка таким образом довольно дорого.
Два способа улучшения:
1. более простая линия была бы
Значок = Значок.ExtractAssociatedIcon(Приложение.ExecutablePath)
что позволяет избежать отражения, но все же внимательно изучает файл в поисках значка приложения.
2. Если вы установите как значок приложения, так и значок основной формы на нужный значок, то легко и недорого скопировать этот значок из основной формы в любую другую форму внутри приложения.
И это то, что я обычно делаю, определяя "базовую форму", которая содержит все мои предпочтения формы (поведение размера, значок, стили...), от которых я наследую все другие формы.
:)
PS: Я надеюсь, что вы нашли в одном из старых ответов мое подтверждение на старых версиях Windows, всегда показывающее значок приложения на панели задач.
Choroid
Люк только что протестировал и это работает я не могу отредактировать свое решение которое меня расстраивает
Мое решение пока оно работало было кодом которого я не понимал о радость обучения
VB.Net имеет свою собственную очень полезную идею путей исходящих из NetBeans это было легко так долго
поскольку объект был в проекте вы могли бы найти его угадайте это то же самое для
VB.Net просто узнав, что делает "мой", я открыл ему глаза.