我想删除消息框中的按钮,例如(是,是,否,确定...),但不是关闭按钮。我发现没有办法这样做,除非也删除参数,但我不能这样做,因为我需要将选项参数添加到我的消息框。
问问题
4517 次
4 回答
7
我认为您唯一的选择是创建一个看起来像消息框的自定义表单。
于 2013-05-01T15:03:26.807 回答
3
我同意@NDJ,最简洁和最直接的解决方案是基于表单构建自己的消息框。要修改实际的 MessageBox 将需要大量低级 Windows API,如本例所示。(该项目正在修改按钮上的文本。您需要额外的 API 来隐藏它们;但 MessageBox 不会调整大小。)
*我不建议您使用 API 方法...我只是向您展示它需要多少努力和代码!
于 2013-05-01T17:16:47.453 回答
1
没有MessageBoxButtons.CLOSE
您指定的成员。照 NDJ 说的做。
于 2013-05-01T15:07:56.760 回答
1
因此,如果您的意思是删除关闭按钮。除非您制作新表格,否则无法将其删除。如果你想禁用它。复制以下链接。我多次使用它来禁用消息框中的关闭按钮。
internal const int SC_CLOSE = 0xF060; //close button's code in windows api
internal const int MF_GRAYED = 0x1; //disabled button status (enabled = false)
internal const int MF_ENABLED = 0x00000000; //enabled button status
internal const int MF_DISABLED = 0x00000002; //disabled button status
[DllImport("user32.dll")] //Importing user32.dll for calling required function
private static extern IntPtr GetSystemMenu(IntPtr HWNDValue, bool Revert);
/// HWND: An IntPtr typed handler of the related form
/// It is used from the Win API "user32.dll"
[DllImport("user32.dll")] //Importing user32.dll for calling required function again
private static extern int EnableMenuItem(IntPtr tMenu, int targetItem, int targetStatus);
于 2017-01-19T15:44:02.680 回答