如何删除MessageBox按钮?

时间:2013-05-01 15:00:17

标签: c# messagebox

我想删除消息框中的按钮,例如(是,YesNo,OK ...),但不是关闭按钮。除非删除参数,否则我发现无法做到这一点,但我不能这样做,因为我需要在我的消息框中添加选项参数。

4 个答案:

答案 0 :(得分:6)

我认为您唯一的选择是创建一个看似消息框的自定义表单。

答案 1 :(得分:2)

我同意@NDJ,最干净,最直接的解决方案是根据表单构建自己的消息框。要修改实际的MessageBox,需要许多低级Windows API,例如example。 (该项目正在修改按钮上的文本。您需要其他API来隐藏它们;但MessageBox不会调整大小。)

*我不建议您使用API​​方法......我只是向您展示它将花费多少精力和代码!

答案 2 :(得分:1)

根据the C# API for MessageBox's

您指定的MessageBoxButtons.CLOSE没有成员。就像NDJ所说的那样。

答案 3 :(得分:0)

所以,如果你的意思是删除关闭按钮。除非你制作新表格,否则你无法删除它。如果你想禁用它。复制以下链接。我正在多次使用它来禁用消息框中的关闭按钮。

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