gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 04:53:07 26 4
gpt4 key购买 nike

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

是否可以在WinForms中制作这种类型的消息框?

我试过下面的代码:

MessageBox.Show("Error in Division Fill.\n" + ex.Message,
"Information",
MessageBoxButtons.OK,
MessageBoxIcon.Information,
MessageBoxOptions.RightAlign);

但这产生了以下错误:

Error 24 The best overloaded method match for 'System.Windows.Forms.MessageBox.Show(string, string, System.Windows.Forms.MessageBoxButtons, System.Windows.Forms.MessageBoxIcon, System.Windows.Forms.MessageBoxDefaultButton)' has some invalid arguments

G:\Jagadeeswaran\Nov 17\MCS-SPS School\MCS-SPS School\Certificate\Transfer.cs 164 21 MCS-SPS School

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

最佳答案

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

真的不推荐它(可能会在未来的版本中中断),但如果你觉得真的很懒,你可以通过反射直接使用这个内部类型。

// 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();

结果:

Details Dialog

关于c# - 如何在 WinForms 中显示包含详细信息的消息框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8653430/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com