C# MessageBox To Front When App is Minimized To Tray

前端 未结 5 1514
离开以前
离开以前 2020-12-06 12:42

I have some code that popups a message box:

MessageBox.Show(this,
                 \"You have not inputted a username or password. Would you like to configur         


        
相关标签:
5条回答
  • 2020-12-06 13:04

    you can try like this

    MessageBox.Show(new Form() { TopMost = true }, "You have not inputted a username or password. Would you like to configure your settings now?",
                     "Settings Needed",
                     MessageBoxButtons.YesNo,
                     MessageBoxIcon.Question);
    
    0 讨论(0)
  • 2020-12-06 13:05

    MessageBox on top of all windows (no tray icon):

    MessageBox.Show(new Form() { TopMost = true }, boxText, "Box Title",
                    MessageBoxButtons.OK, boxIcon);
    

    MessageBox and your app on top of all windows (no tray icon):

    TopMost = true;
    MessageBox.Show(boxText, "Box Title", MessageBoxButtons.OK, boxIcon);
    TopMost = false;
    

    MessageBox on top of all windows, plus tray icon (app loses focus):

    MessageBox.Show(boxText, "Box Title", MessageBoxButtons.OK, boxIcon, 0,
                    MessageBoxOptions.DefaultDesktopOnly);
    // (The "0" can also be "MessageBoxDefaultButton.Button1".)
    

    MessageBoxButtons.OK and boxIcon are optional arguments in the first two.

    Setting TopLevel doesn't do anthing; it is already true.

    There is no direct way to center a MessageBox on its parent form. (Except maybe centering the parent form.)

    0 讨论(0)
  • 2020-12-06 13:15

    I only needed this for testing, so if you don't mind being extra cheesy, MessageBoxOptions.ServiceNotification will do the trick...

            MessageBox.Show(message,
                "Error",
                MessageBoxButton.YesNo,
                MessageBoxImage.Exclamation,
                MessageBoxResult.OK,
                MessageBoxOptions.ServiceNotification);
    
    0 讨论(0)
  • 2020-12-06 13:21

    There's an additional flag you can specify as an option to the standard Windows MessageBox function that isn't exposed in the WinForms wrapper.

    What you're looking for is called MB_TOPMOST, which ensures that the message box is displayed as the top-most window over everything else on your desktop. Simply amend your code as shown below:

    MessageBox.Show(this,
                    "You have not inputted a username or password. Would you like to configure your settings now?",
                    "Settings Needed",
                    MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question,
                    MessageBoxDefaultButton.Button1,  // specify "Yes" as the default
                    (MessageBoxOptions)0x40000);      // specify MB_TOPMOST
    
    0 讨论(0)
  • 2020-12-06 13:21

    The more correct way to do this is to set the owner of the MessageBox

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