2010-09-23 19 views
6

Tôi có một ứng dụng dựa trên khay hệ thống. Tôi có một trình đơn ngữ cảnh tốt đẹp nếu bạn nhấp chuột phải vào nó tuy nhiên tôi muốn một trình đơn ngữ cảnh khác nhau để hiển thị nếu bạn nhấp chuột trái vào nó. Ngay bây giờ tôi làm cho menu khác nhau xuất hiện vớiLàm thế nào để bạn có được Menu ngữ cảnh khác nếu bạn bấm Lt-Click hoặc Rt-Click vào biểu tượng thông báo?

private void niTrayIcon_MouseClick(object sender, MouseEventArgs e) 
{ 
    if (e.Button == System.Windows.Forms.MouseButtons.Left) 
    { 
     cmsTrayLeftClick.Show(Cursor.Position); 
    } 

} 

Điều đó làm cho menu xuất hiện nhưng cách nhấn tắt menu không làm cho nó biến mất, cách duy nhất để làm cho menu biến mất hoặc là bấm vào một mục hoặc rt nhấp vào biểu tượng khay.

Tôi cũng đã nghĩ ra điều này nhưng có vẻ như đó là cách chính xác để thực hiện.

private void niTrayIcon_MouseClick(object sender, MouseEventArgs e) 
{ 
    if (e.Button == System.Windows.Forms.MouseButtons.Left) 
    { 
     niTrayIcon.ContextMenuStrip = cmsTrayLeftClick; 
     MethodInfo mi = typeof(NotifyIcon).GetMethod("ShowContextMenu", BindingFlags.Instance | BindingFlags.NonPublic); 
     mi.Invoke(niTrayIcon, null); 
     niTrayIcon.ContextMenuStrip = cmsTrayRtClick; 
    } 
} 

Đây có phải là cách làm đúng hay có cách thanh lịch hơn?

Trả lời

6

Như không ai khác đã đăng tải một cách mà làm việc Tôi đoán một cách chính xác để làm việc đó là

private void niTrayIcon_MouseClick(object sender, MouseEventArgs e) 
{ 
    if (e.Button == System.Windows.Forms.MouseButtons.Left) 
    { 
     niTrayIcon.ContextMenuStrip = cmsTrayLeftClick; 
     MethodInfo mi = typeof(NotifyIcon).GetMethod("ShowContextMenu", BindingFlags.Instance | BindingFlags.NonPublic); 
     mi.Invoke(niTrayIcon, null); 
     niTrayIcon.ContextMenuStrip = cmsTrayRtClick; 
    } 
} 
+0

giải pháp của bạn hoạt động tuyệt vời và nó cũng đã giải quyết một số vấn đề khác với tôi: ContextMenuStrip của tôi là cách xa mousepointer, khi tôi nhấp vào biểu tượng thông báo. Bây giờ nó hoàn toàn phù hợp. – FrenkyB