سؤال

ما يجب القيام به أن يكون .صافي التطبيق تظهر في نافذة "علبة النظام" كما رمز ؟

و كيف يمكنك التعامل مع mousebutton النقرات على الرمز ؟

هل كانت مفيدة؟

المحلول

أولا، إضافة NotifyIcon التحكم إلى النموذج. ثم سلك حتى يخطر أيقونة لتفعل ما تريد.

إذا كنت تريد أن إخفاء لعلبة على تقليل، حاول هذا.

Private Sub frmMain_Resize(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize
    If Me.WindowState = FormWindowState.Minimized Then
        Me.ShowInTaskbar = False
    Else
        Me.ShowInTaskbar = True
    End If
End Sub

Private Sub NotifyIcon1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseClick
    Me.WindowState = FormWindowState.Normal
End Sub

وأنا في بعض الأحيان استخدام نص بالون من أجل إعلام المستخدم - أن يتم ذلك على هذا النحو:

 Me.NotifyIcon1.ShowBalloonTip(3000, "This is a notification title!!", "This is notification text.", ToolTipIcon.Info)

نصائح أخرى

ويمكنك إضافة المكون NotifyIcon من مربع الأدوات على النموذج الرئيسي.

وهذا له أحداث مثل MouseDoubleClick التي يمكنك استخدامها للتعامل مع الأحداث المختلفة.

وتحرير: لديك للتأكد من أن قمت بتعيين الخاصية الرمز إلى ملف منظمة البن الدولية سارية المفعول إذا كنت تريد أن تظهر بشكل صحيح في سيستراي

.

والتعليمي صغيرة لطيفة على استخدام فئة NotifyIcon هنا: HTTP: // شبكة الاتصالات العالمية .developer.com / صافي / CSHARP / article.php / 3336751

NotifyIcon المكون الخاص بك شكل. واستخدامها في الأحداث للتعامل مع نقرات الماوس.

وهذا يدل على ويتعامل مع كل نقرة ماوس مجموعات لNotifyIcon

والمزيد هنا: https://archive.codeplex.com/؟p=notifyicon

تمديد الجواب توم, أحب أن تجعل فقط الرمز المرئي إذا كان التطبيق هو الحد الأدنى.
للقيام بذلك, مجموعة Visible = False بالنسبة NotifyIcon واستخدام رمز أدناه.

لدي أيضا رمز أدناه إلى إخفاء رمز خلال إغلاق منع مزعج شبح صينية الرموز التي لا تزال قائمة بعد اغلاق التطبيق.

Private Sub Form_Resize(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize
    If Me.WindowState = FormWindowState.Minimized Then
        Hide()
        NotifyIcon1.Visible = True
        NotifyIcon1.ShowBalloonTip(3000, NotifyIcon1.Text, "Minimized to tray", ToolTipIcon.Info)
    End If
End Sub

Private Sub NotifyIcon1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseClick
    Show()
    Me.WindowState = FormWindowState.Normal
    Me.Activate()
    NotifyIcon1.Visible = False
End Sub

Private Sub Form_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
    NotifyIcon1.Visible = False
    Dim index As Integer
    While index < My.Application.OpenForms.Count
        If My.Application.OpenForms(index) IsNot Me Then
            My.Application.OpenForms(index).Close()
        End If
        index += 1
    End While
End Sub

إذا كنت ترغب في إضافة حق انقر القائمة:

VB.NET:كيفية جعل حق انقر القائمة على أيقونة صينية

في المادة (مع تعديل السياق):

إنشاء شكل على استضافة رمز علبة قائمة السياق

  • في خصائص مجموعة FormBorderStyle إلى لا شيء.
  • مجموعة ShowInTaskbar كاذبة (لأننا لا نريد الأيقونة التي تظهر في شريط المهام عندما انقر بزر الماوس الأيمن فوق رمز علبة!).
  • مجموعة StartPosition إلى دليل.
  • تعيين أعلى إلى True.
  • إضافة ContextMenuStrip إلى شكل جديد و سمه ما تريد.
  • إضافة عناصر إلى ContextMenuStrip (على سبيل المثال فقط إضافة بند واحد يسمى "خروج").

شكل التعليمات البرمجية خلف سوف تبدو مثل هذا:

Private Sub Form_Deactivate(sender As Object, e As EventArgs) Handles Me.Deactivate
    Me.Close()
End Sub

Private Sub Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    ContextMenuStrip1.Show(Cursor.Position)
    Me.Left = ContextMenuStrip1.Left + 1
    Me.Top = ContextMenuStrip1.Top + 1
End Sub

Private Sub ExitToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ExitToolStripMenuItem.Click
    MainForm.NotifyIcon1.Visible = False
    End
End Sub

ثم تغيير notifyicon الماوس حدث هذا (TrayIconMenuForm هو اسم النموذج لتقديم قائمة السياق):

Private Sub NotifyIcon1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseClick
    Select Case e.Button
        Case Windows.Forms.MouseButtons.Left
            Show()
            Me.WindowState = FormWindowState.Normal
            Me.Activate()
            NotifyIcon1.Visible = False
        Case Windows.Forms.MouseButtons.Right
            TrayIconMenuForm.Show() 'Shows the Form that is the parent of "traymenu"
            TrayIconMenuForm.Activate() 'Set the Form to "Active", that means that that will be the "selected" window
            TrayIconMenuForm.Width = 1 'Set the Form width to 1 pixel, that is needed because later we will set it behind the "traymenu"
            TrayIconMenuForm.Height = 1 'Set the Form Height to 1 pixel, for the same reason as above
        Case Else
            'Do nothing
    End Select
End Sub
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top