创建一个无模式消息框

Sma*_*ery 21 .net c# messagebox modeless

如何创建无模式MessageBox?我是否必须创建自己的Windows窗体类并使用它?如果是这样,是否有一种简单的方法可以添加警告图标(而不是插入我自己的图像)并根据文本量调整大小?

toj*_*ies 47

如果您需要一个消息框,只在代码继续在后台运行时显示自己(该框仍然是模态的,并且将阻止用户使用其他窗口,直到单击确定),您始终可以在其自己的线程中启动消息框并继续做你在原始线程中所做的事情:

    // Do stuff before.
    // Start the message box -thread:
    new Thread(new ThreadStart(delegate
    {
      MessageBox.Show
      (
        "Hey user, stuff runs in the background!", 
        "Message",
        MessageBoxButtons.OK,
        MessageBoxIcon.Warning
      );
    })).Start();
    // Continue doing stuff while the message box is visible to the user.
    // The message box thread will end itself when the user clicks OK.
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这实际上直接回答了这个问题. (3认同)
  • 你可以使它更简洁:`new Thread(()=> {MessageBox.Show("Hi");}).Start();` (2认同)

JLW*_*low 6

您必须创建一个表单并用于Show()显示它无模式.MessageBox.Show(...)表现模态,如ghiboz在例子中所见; 显示"消息描述"直到用户按下按钮.

随着MessageBox.Show(...)你只要在MessageBox是封闭得到的结果; 使用无模式消息框,您的代码必须有一个机制,如事件,以便在用户最终选择消息框中的内容时作出反应.