كيفية جعل ويندوز الأشكال .NET عرض أيقونة صينية?
-
03-07-2019 - |
سؤال
ما يجب القيام به أن يكون .صافي التطبيق تظهر في نافذة "علبة النظام" كما رمز ؟
و كيف يمكنك التعامل مع 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