Приложение Tray в C # .NET [дубликат]

Если вам действительно нужны десятичные числа для вычисления (и не только для вывода), не используйте бинарный формат с плавающей запятой, например double.

Use BigDecimal or any other decimal-based format.

Я использую BigDecimal для вычислений, но помните, что он зависит от размера чисел, с которыми вы имеете дело. В большинстве моих реализаций я нахожу, что синтаксический анализ из двойного или целого числа в Long достаточно для вычисления очень большого числа.

На самом деле, я недавно использовал parsed-to-Long для получения точных представлений (как против шестнадцатеричных результатов) в графическом интерфейсе для чисел, больших как ################################# символов (как пример). [/ д2]

127
задан Michael Stum 24 September 2009 в 16:59
поделиться

3 ответа

Нет никакого NotifyIcon для WPF.

Мой коллега использовал эту свободно доступную библиотеку для хорошего эффекта:

99
ответ дан Drew Noakes 22 August 2018 в 08:56
поделиться
  • 1
    Фантастическая библиотека. Не могу дождаться, чтобы использовать его! – Rob Hay 11 August 2011 в 01:56
  • 2
    Дрю, похоже, эта связь скончалась. У вас есть альтернативная ссылка для этой библиотеки? Я сделал быстрый поиск, но не смог определить, были ли результаты для одного и того же проекта. – Brad Larson♦ 6 August 2012 в 20:58
  • 3
    @BradLarson, сайт, похоже, не работает; но в любом случае проект доступен как пакет Nuget (см. ответ Дейла) – Thomas Levesque 7 August 2012 в 10:29
  • 4
    Это действительно потрясающая библиотека !!! – Academy of Programmer 23 January 2013 в 17:48

Вы должны использовать элемент управления NotifyIcon из System.Windows.Forms, или, альтернативно, вы можете использовать API значков уведомлений, предоставляемый Windows API. WPF Не дает такого эквивалента, и он был запрошен в Microsoft Connect несколько раз.

У меня есть код в GitHub, который использует System.Windows.Forms NotifyIcon Component из приложения WPF, код можно просмотреть на https://github.com/wilson0x4d/Mubox/blob/master/Mubox.QuickLaunch/AppWindow.xaml.cs

Вот сводные биты:

Создайте окно WPF с ShowInTaskbar = False и загрузите его в не видимое состояние.

На уровне класса:

private System.Windows.Forms.NotifyIcon notifyIcon = null;

Во время OnInitialize ():

notifyIcon = new System.Windows.Forms.NotifyIcon();
notifyIcon.Click += new EventHandler(notifyIcon_Click);
notifyIcon.DoubleClick += new EventHandler(notifyIcon_DoubleClick);
notifyIcon.Icon = IconHandles["QuickLaunch"];

Во время OnLoaded ():

notifyIcon.Visible = true;

И для взаимодействия (показано как notifyIcon.Click и DoubleClick выше):

void notifyIcon_Click(object sender, EventArgs e)
{
    ShowQuickLaunchMenu();
}

Здесь вы можете возобновить использование элементов управления WPF и API, таких как контекстные меню, всплывающие окна и т. д.

Это так просто. Вам не обязательно нужно WPF-окно для размещения компонента, это просто самый удобный способ внедрить его в приложение WPF (поскольку окно обычно является точкой входа по умолчанию, определенной через App.xaml), аналогично, t требуется WPF Wrapper или сторонний элемент управления, поскольку SWF-компонент гарантированно присутствует в любой установке .NET Framework, которая также поддерживает WPF, так как она является частью .NET Framework (на которой основаны все текущие и будущие версии .NET Framework). На сегодняшний день Microsoft не указывает, что поддержка SWF будет удалена из .NET Framework в ближайшее время.

Надеюсь, что это поможет.

Это немного сыра, который вы должны использовать Компонент pre-3.0 Framework для получения значка в трее, но, как объяснил Microsoft, в рамках WPF нет концепции системного лотка. WPF - это технология презентации, а значки уведомлений - это концепция операционной системы (не концепция «презентация»).

81
ответ дан MikaS 22 August 2018 в 08:56
поделиться
  • 1
    Спасибо за подробное объяснение! – Michael Stum♦ 25 September 2009 в 10:18
  • 2
    +1, это должен быть выбранный ответ только для объяснения. – ToastyMallows 1 August 2013 в 23:26
  • 3
    Престижность этого последнего абзаца. Это было именно то, что мне нужно было знать, и именно этот уровень простейших, проницательных деталей приносит хороший разработчик. – series0ne 27 June 2017 в 07:44

Недавно у меня была такая же проблема. К сожалению, NotifyIcon - это только элемент управления Windows.Forms на данный момент, если вы хотите его использовать, вам придется включить эту часть фреймворка. Я предполагаю, что это зависит от того, насколько вы являетесь WPF-пуристом.

Если вам нужен быстрый и простой способ начать работу с этим элементом управления WPF NotifyIcon в Code Project , который вообще не полагается на WinForms NotifyIcon. Более поздняя версия доступна на веб-сайте автора и в качестве пакета NuGet .

  • Rich ToolTips, а не текст
  • Контекстные меню и всплывающие окна WPF
  • Поддержка команд и маршрутизируемых событий
  • Гибкая привязка данных
  • Сообщения с расширенным воздушным шаром, а не сообщения по умолчанию, предоставляются ОС

Проверить это из. Он поставляется с удивительным примером приложения тоже, очень проста в использовании, и вы можете иметь великолепные всплывающие окна, всплывающие подсказки, контекстные меню Windows Live Messenger. Идеально подходит для отображения RSS-канала, я использую его для аналогичной цели.

47
ответ дан R0MANARMY 22 August 2018 в 08:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: