1

我想删除消息框中的按钮,例如(是,是,否,确定...),但不是关闭按钮。我发现没有办法这样做,除非也删除参数,但我不能这样做,因为我需要将选项参数添加到我的消息框。

4

4 回答 4

7

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

于 2013-05-01T15:03:26.807 回答
3

我同意@NDJ,最简洁和最直接的解决方案是基于表单构建自己的消息框。要修改实际的 MessageBox 将需要大量低级 Windows API,如本例所示。(该项目正在修改按钮上的文本。您需要额外的 API 来隐藏它们;但 MessageBox 不会调整大小。)

*我不建议您使用 API 方法...我只是向您展示它需要多少努力和代码!

于 2013-05-01T17:16:47.453 回答
1

根据MessageBox 的 C# API

没有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 回答