Displaying a MessageBox on top of all forms, setting location and/or color

后端 未结 7 1302
野性不改
野性不改 2021-01-06 02:03

I have two forms and I set one of the forms\' TopMost property to true. Somewhere, while the program runs, I show a MessageBox, but since TopMost is set to true

相关标签:
7条回答
  • 2021-01-06 02:48

    1) The MessageBox.Show method has an overload that takes a first parameter of Window type. If you use that overload instead of just Show(string), ie.:

    class MyForm : Form {
        void method(){
           MessageBox.Show(this, "blablablablabla");
        }
    }
    

    then the MessageBox will show up in a 'modal' mode and it will be exactly on top on that form. Now just ensure that you pass that topmost form and you're done. Side effect is that the 'modal' mode will cause the Messagebox to BLOCK the original window until the message is dismissed.

    2) No, that is not possible directly. However, you can play hard with .Net and get a "handle" to the messagebox and then move the window via P/Invoke to some WinApi functions, but I recommend you not.

    3) No, that's just not possible with MessageBoxes

    What you want to achieve in (2) and (3) is not possible, because the MsgBox is meant to be simple. To get that things you will have to write your own tiny form that will act as a message box, and present that form instead of the message box. That form will be able to have any styling, any position and any behaviour you like.

    0 讨论(0)
提交回复
热议问题