2012-02-07 26 views
5

Tôi có một ứng dụng C# mà tôi đang sử dụng Messagebox.Show với một nút giúp đỡ, theo ví dụ của Microsoft tại http://msdn.microsoft.com/en-us/library/szwxe9we.aspxtổ chức sự kiện không bắn khi nhấn nút giúp đỡ về MessageBox

tôi thêm sự kiện để hình thành, nhưng nhấn nút trợ giúp không bao giờ kích hoạt sự kiện - nhấn F1 trên biểu mẫu DOES. Ngay cả lấy ví dụ của Microsoft gần như hoàn toàn không cháy sự kiện này. Toàn bộ mã dưới đây. Bất kỳ ý tưởng những gì tôi không làm?

another post nơi ai đó đã nhận thấy điều tương tự.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace WindowsFormsApplication4 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 

      DialogResult r = AlertMessageWithCustomHelpWindow(); 
     } 
     // Display a message box with a Help button. Show a custom Help window 
     // by handling the HelpRequested event. 
     private DialogResult AlertMessageWithCustomHelpWindow() 
     { 
      // Handle the HelpRequested event for the following message. 
      this.HelpRequested += new System.Windows.Forms.HelpEventHandler(this.Form1_HelpRequested); 

      this.Tag = "Message with Help button."; 

      // Show a message box with OK and Help buttons. 
      DialogResult r = MessageBox.Show("Message with Help button.", 
               "Help Caption", MessageBoxButtons.OK, 
               MessageBoxIcon.Question, 
               MessageBoxDefaultButton.Button1, 
               0, true); 

      // Remove the HelpRequested event handler to keep the event 
      // from being handled for other message boxes. 
      this.HelpRequested -= new System.Windows.Forms.HelpEventHandler(this.Form1_HelpRequested); 

      // Return the dialog box result. 
      return r; 
     } 

     private void Form1_HelpRequested (System.Object sender, System.Windows.Forms.HelpEventArgs hlpevent) 
     { 
      // Create a custom Help window in response to the HelpRequested event. 
      Form helpForm = new Form(); 

      // Set up the form position, size, and title caption. 
      helpForm.StartPosition = FormStartPosition.Manual; 
      helpForm.Size = new Size(200, 400); 
      helpForm.DesktopLocation = new Point(this.DesktopBounds.X + 
                this.Size.Width, 
                this.DesktopBounds.Top); 
      helpForm.Text = "Help Form"; 

      // Create a label to contain the Help text. 
      Label helpLabel = new Label(); 

      // Add the label to the form and set its text. 
      helpForm.Controls.Add(helpLabel); 
      helpLabel.Dock = DockStyle.Fill; 

      // Use the sender parameter to identify the context of the Help request. 
      // The parameter must be cast to the Control type to get the Tag property. 
      Control senderControl = sender as Control; 

      helpLabel.Text = "Help information shown in response to user action on the '" + 
           (string)senderControl.Tag + "' message."; 

      // Set the Help form to be owned by the main form. This helps 
      // to ensure that the Help form is disposed of. 
      this.AddOwnedForm(helpForm); 

      // Show the custom Help window. 
      helpForm.Show(); 

      // Indicate that the HelpRequested event is handled. 
      hlpevent.Handled = true; 

     } 


    } 
} 
+0

Hãy xem câu hỏi này và xem câu trả lời có giúp http://stackoverflow.com/questions/2822805/messagebox-show-not-raising-helprequested-event –

Trả lời

4

Hãy dòng

DialogResult r = AlertMessageWithCustomHelpWindow(); 

ra khỏi các nhà xây dựng Form1 - có thể đặt nó trong một handler bấm vào nút trên form chính. Dường như bạn đang chặn luồng giao diện người dùng bằng MessageBox.Show() dừng hộp thoại trợ giúp hiển thị.

+0

Cảm ơn Paul - đã làm điều đó – user1195062

Các vấn đề liên quan