PDA

View Full Version : مشکل با Notify Icon



reza6384
جمعه 02 بهمن 1388, 12:34 عصر
سلام دوستان.

من یک Notify Icon برای برنامه ام گذاشتم و یک Context Menu هم براش اضافه کردم. اما مشکلم اینه که وقتی که روی آیکونش کلیک راست میشه بازهم رویداد Ntfy_Click اجرا میشه. یعنی اینکه میخوام فقط وقتی کاربر Click کرد رویداد Ntfy_Click اجرا بشه ، نه وقتی که Right_Click میکنه. همه رویدادها رو هم تست کردم ، MouseDown و MouseUp هم با کلیک راست فراخوانی میشن. اما به NotifyIcon های دیگه مثلا Winamp که نگاه کنیم درسته و با کلیک راست رویداد کلیکش اجرا نمیشه.

با تشکر.

sari-1369
جمعه 02 بهمن 1388, 15:55 عصر
فکر کنم بتونی توی رویداد MouseClick تشخیص بدی که کدوم دکمه از ماوس فشار داده شده ، بر اساس او یه کاری انجام بدی :


Private Sub NotifyIcon1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseClick
If e.Button = Windows.Forms.MouseButtons.Left Then

End If
End Sub

reza6384
جمعه 02 بهمن 1388, 18:22 عصر
دستت درد نکنه ، خیلی ساده ، مفید و کوتاه.

sari-1369
شنبه 03 بهمن 1388, 04:19 صبح
یه سوال ، چطوری خودت Context Menu رو نمایش میدی ؟ منظورم اینه که تو این حالت چطوری از تابع Show استفاده میکنی ؟ جابه جا نمیشه ؟ کنار آیکن نمایش داده میشه ؟

reza6384
شنبه 03 بهمن 1388, 16:41 عصر
یه سوال ، چطوری خودت Context Menu رو نمایش میدی ؟ منظورم اینه که تو این حالت چطوری از تابع Show استفاده میکنی ؟ جابه جا نمیشه ؟ کنار آیکن نمایش داده میشه ؟

باید یک Context Menu رو به فرم اضافه کنی و بعد Property اه ContextMenu اه NotifyIcon رو مساوی اون قرار بدی. و جایی هم که نمایش داده میشه دقیقاً کنار آیکون هست. ContextMenu با RightClick باز میشه و به Show احتیاج نداره.

sari-1369
شنبه 03 بهمن 1388, 16:57 عصر
باید یک Context Menu رو به فرم اضافه کنی و بعد Property اه ContextMenu اه NotifyIcon رو مساوی اون قرار بدی. و جایی هم که نمایش داده میشه دقیقاً کنار آیکون هست. ContextMenu با RightClick باز میشه و به Show احتیاج نداره.



این که خب درست ، ولی منظور من این بود که اگر بخوای با چپ کلیک اونو نمایش بدی چیکار باید کنیم ؟

reza6384
شنبه 03 بهمن 1388, 21:51 عصر
اگر بخوای با کلیک چپ نمایش بدی که باید توی رویداد Click مربوط به Notify Icon بزنی ContextMenu.Show اما اینکه کجا نمایش داده میشه این تابع Show چند تا Overload داره که توی اونها یک مختصات رو میگیره و Context Menu رو نمایش میده و این مختصات هم از نوع System.Drawing.Point هستش. حالا اینکه چجوری مختصات NotificationArea رو حساب کرد میشه موقع کلیک با استفاده از اون e مربوط به MouseEventArg فکر کنم مختصات Mouse رو بدست اورد و بعد اونرو به تابع Show فرستاد.