我有一个C#应用程序,我正在使用带有帮助按钮的Messagebox.Show,根据微软的例子http://msdn.microsoft.com/en-us/library/szwxe9we.aspx
我将事件添加到表单中,但按下帮助按钮从不触发事件 - 然而按表格上的F1键.即使完全采用微软的例子也不会引发这一事件.整个代码如下.我有什么想法吗?
还有一个帖子,有人注意到了这一点.
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
走线
DialogResult r = AlertMessageWithCustomHelpWindow();
Run Code Online (Sandbox Code Playgroud)
在 Form1 构造函数之外 - 也许将其放在主窗体上的按钮单击处理程序中。看起来您正在使用 MessageBox.Show() 阻止 UI 线程,从而停止显示帮助对话框。
| 归档时间: |
|
| 查看次数: |
2221 次 |
| 最近记录: |