如何移除消息框按钮
本文关键字:按钮 消息 何移 | 更新日期: 2023-09-27 18:11:36
我想删除消息框中的按钮,例如(yes, YesNo, OK…),但不删除关闭按钮。我发现没有办法做到这一点,除非删除参数,但我不能这样做,因为我需要添加选项参数到我的消息框
我认为你唯一的选择是创建一个自定义表单,看起来像一个消息框。
我同意@NDJ的观点,最干净、最直接的解决方案是基于表单构建自己的消息框。要修改实际的MessageBox需要大量的低级Windows api,就像这个例子一样。(该项目正在修改按钮上的文本。你需要额外的api来隐藏它们;消息框不会调整大小。)
*我不建议你使用API方法…我只是向您展示了它需要多少努力和代码!
根据MessageBox的c# API
没有指定的MessageBoxButtons.CLOSE
成员。照NDJ说的做
所以如果你想删除关闭按钮。除非你创造新的形态,否则你无法移除它。如果你想禁用它。复制下面的链接。我用了很多次,消息框中的关闭按钮被禁用。
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);