如何移除消息框按钮

本文关键字:按钮 消息 何移 | 更新日期: 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);