首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在WinForms中显示包含详细信息的消息框?

如何在WinForms中显示包含详细信息的消息框?
EN

Stack Overflow用户
提问于 2011-12-28 16:14:41
回答 6查看 41.5K关注 0票数 19

刚才我注意到,当属性被设置为无效值时,Visual Studio会显示一个消息框,其中包含详细信息。例如:

是否可以在WinForms中创建此类型的消息框?

我已经尝试了以下代码:

代码语言:javascript
复制
MessageBox.Show("Error in Division Fill.\n" + ex.Message,
                "Information",            
                MessageBoxButtons.OK,
                MessageBoxIcon.Information,
                MessageBoxOptions.RightAlign);

但这会产生以下错误:

错误24 'System.Windows.Forms.MessageBox.Show(string,string,System.Windows.Forms.MessageBoxButtons,System.Windows.Forms.MessageBoxIcon,string)的最佳重载方法匹配包含一些无效参数

G:\Jagadeeswaran\11月17日\ MCS-SPS学校\MCS-SPS School\Certificate\Transfer.cs 164 21 MCS-SPS学校

如何修复此错误并获得显示其他详细信息的消息框?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-12-28 16:55:59

正如其他人所指出的,您应该编写一个具有所需功能的自定义对话框。有关这方面的帮助,您可以查看PropertyGrid在此对话框中使用的实际实现(可能使用反编译器),从.NET 4.0开始,它是System.Windows.Forms程序集内部的System.Windows.Forms.PropertyGridInternal.GridErrorDlg类型。

我真的不推荐它(可能会在未来的版本中被打破),但是如果你真的感到懒惰,你可以使用反射直接使用这个内部类型。

代码语言:javascript
复制
// Get reference to the dialog type.
var dialogTypeName = "System.Windows.Forms.PropertyGridInternal.GridErrorDlg";
var dialogType = typeof(Form).Assembly.GetType(dialogTypeName);

// Create dialog instance.
var dialog = (Form)Activator.CreateInstance(dialogType, new PropertyGrid());

// Populate relevant properties on the dialog instance.
dialog.Text = "Sample Title";
dialogType.GetProperty("Details").SetValue(dialog, "Sample Details", null);
dialogType.GetProperty("Message").SetValue(dialog, "Sample Message", null);

// Display dialog.
var result = dialog.ShowDialog();

结果

票数 28
EN

Stack Overflow用户

发布于 2011-12-28 16:28:13

要创建自定义对话框/消息窗口,您需要设置Form的以下属性。

  1. AcceptButton
  2. CancelButton
  3. FormBorderStyle=FixedDialog
  4. MaximizeBox=False
  5. MinimizeBox=False
  6. ShowIcon=False
  7. ShowInTaskBar=False
  8. StartPosition=CenterParent

现在,使用ShowDialog()方法显示自定义对话框。

代码语言:javascript
复制
MyDialog dialog=new MyDialog();
DialogResult result=dialog.ShowDialog();
if(result == DialogResult.OK)
{
  //
}

有关对话框的更多信息,请阅读MSDN文章- Dialog Boxes (Visual C#)

票数 10
EN

Stack Overflow用户

发布于 2011-12-28 16:33:07

只需编写您自己的对话框,就不会像您想要显示方法那样重载。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8653430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档