2013-05-01 88 views
0

我想刪除消息框中的按鈕,如(是,是否,OK ...),但不是關閉按鈕。我發現沒有辦法做到這一點,除非刪除參數,但我不能這樣做,因爲我需要添加選項參數到我的消息框。如何刪除MessageBox按鈕?

+2

您至少需要一個按鈕;它是消息框規範的一部分。如果你只是想顯示一條信息性消息,比如說在沒有用戶介入的情況下讓它自動消失,那麼除了消息框外,你還需要使用別的東西,可能只是一個簡單的表單。 – 2013-05-01 15:03:04

回答

2

我同意@NDJ,最簡潔最直接的解決方案是基於表單構建自己的消息框。要修改實際的MessageBox,需要很多低級別的Windows API,例如這個example。 (該項目正在修改按鈕上的文本,您需要額外的API來隱藏它們;但MessageBox不會調整大小)

*我不建議您使用API​​方法...我是隻是告訴你需要多少努力和代碼!

6

我認爲你唯一的選擇是創建一個看起來像一個消息框的自定義窗體。

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