Intereting Posts
Данные связывают свойства enums с сеткой и описанием отображения Как работает Marshal.GetFunctionPointerForDelegate для членов экземпляра? Подключение к базе данных ACCDB MS-ACCESS через OLEDB Утечка памяти, когда ThreadLocal используется в циклическом графике C # – служба Windows с осознанием системного времени Сетевая печать с помощью windows WPF INotifyPropertyChanged для связанных свойств только для чтения Лучший вариант для ретроспективного применения TDD в C # codebase Префикс @ для делегатов имеет какое-то особое значение? Доступ к нестационарному элементу через Lazy или любое выражение lambda Entity Framework – Как получить относительный путь к файлу в методе семян Как совместить утверждения коллекции и собственности с помощью плавных утверждений? Есть ли способ в Visual Studio легко получить квалифицированные имена типов? Остановить Entity Framework от изменения базы данных ASP.NET WebAPI 2 Асинхронные фильтры

Показать уведомление о воздушном шаре

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

Что мне делать, чтобы отлаживать это, поскольку он не бросает ошибки и не показывает воздушный шар?

private void showBalloon(string title, string body) { NotifyIcon notifyIcon = new NotifyIcon(); notifyIcon.Visible = true; if (title != null) { notifyIcon.BalloonTipTitle = title; } if (body != null) { notifyIcon.BalloonTipText = body; } notifyIcon.ShowBalloonTip(30000); } 

    Фактически вы не указали значок, отображаемый на панели задач. notifyIcon.Icon = SystemIcons.Application код в LINQPad, просто добавив notifyIcon.Icon = SystemIcons.Application перед вызовом ShowBalloonTip я смог получить подсказку для отображения. Также обратите внимание, что вы должны вызвать Dispose когда закончите с экземпляром NotifyIcon .

    Мэтью определил проблему, но я все еще изо всех сил пытался собрать все части. Поэтому я подумал, что краткий пример, который работает в LINQPad as-is, будет полезен (и, предположительно, в другом месте). Просто System.Windows.Forms сборку System.Windows.Forms и вставьте этот код.

     var notification = new System.Windows.Forms.NotifyIcon() { Visible = true, Icon = System.Drawing.SystemIcons.Information, // optional - BalloonTipIcon = System.Windows.Forms.ToolTipIcon.Info, // optional - BalloonTipTitle = "My Title", BalloonTipText = "My long description...", }; // Display for 5 seconds. notification.ShowBalloonTip(5000); // This will let the balloon close after it's 5 second timeout // for demonstration purposes. Comment this out to see what happens // when dispose is called while a balloon is still visible. Thread.Sleep(10000); // The notification should be disposed when you don't need it anymore, // but doing so will immediately close the balloon if it's visible. notification.Dispose(); 

    См. Приведенный ниже исходный код.

     using System; using System.ComponentModel; using System.Drawing; using System.IO; using System.Reflection; using System.Windows.Forms; namespace ShowToolTip { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btBallonToolTip_Click(object sender, EventArgs e) { ShowBalloonTip(); this.Hide(); } private void ShowBalloonTip() { Container bpcomponents = new Container(); ContextMenu contextMenu1 = new ContextMenu(); MenuItem runMenu = new MenuItem(); runMenu.Index = 1; runMenu.Text = "Run..."; runMenu.Click += new EventHandler(runMenu_Click); MenuItem breakMenu = new MenuItem(); breakMenu.Index = 2; breakMenu.Text = "-------------"; MenuItem exitMenu = new MenuItem(); exitMenu.Index = 3; exitMenu.Text = "E&xit"; exitMenu.Click += new EventHandler(exitMenu_Click); // Initialize contextMenu1 contextMenu1.MenuItems.AddRange( new System.Windows.Forms.MenuItem[] { runMenu, breakMenu, exitMenu }); // Initialize menuItem1 this.ClientSize = new System.Drawing.Size(0, 0); this.Text = "Ballon Tootip Example"; // Create the NotifyIcon. NotifyIcon notifyIcon = new NotifyIcon(bpcomponents); // The Icon property sets the icon that will appear // in the systray for this application. string iconPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\setup-icon.ico"; notifyIcon.Icon = new Icon(iconPath); // The ContextMenu property sets the menu that will // appear when the systray icon is right clicked. notifyIcon.ContextMenu = contextMenu1; notifyIcon.Visible = true; // The Text property sets the text that will be displayed, // in a tooltip, when the mouse hovers over the systray icon. notifyIcon.Text = "Morgan Tech Space BallonTip Running..."; notifyIcon.BalloonTipText = "Morgan Tech Space BallonTip Running..."; notifyIcon.BalloonTipTitle = "Morgan Tech Space"; notifyIcon.ShowBalloonTip(1000); } void exitMenu_Click(object sender, EventArgs e) { this.Close(); } void runMenu_Click(object sender, EventArgs e) { MessageBox.Show("BallonTip is Running...."); } } } 

    ShowBalloonnTip занимает миллисекунды. 3 миллисекунды могут быть слишком быстрыми, чтобы вы даже могли видеть. Попробуйте что-то большее, чем 3000

    Возможно, вам понадобится передать модель компонента в конструктор. Это то, что я вижу во всех примерах. Извините, я долгое время использовал его. См. Первый ответ здесь:

    NotifyIcon не показывает

    Взгляните на пример здесь: http://msdn.microsoft.com/en-us/library/system.windows.forms.notifyicon.aspx

    Я вижу некоторые отличия между ним и вашим кодом, есть много частей, которые вы оставляете, например, создание ComponentModelContainer и передача этого в конструктор NotifyIcon .