How to display message box without any buttons in C#

ⅰ亾dé卋堺 提交于 2019-12-01 07:20:54

问题


I try to show a MESSAGE to the user while an operation is executed. The MESSAGE won't show any button. Just a MESSAGE (text) and maybe a background image.

The problem is the following:

  • MessageBox does not seem to be the good control (because of button and it blocks the running process).
  • Form.ShowDialog() also blocks the running process. I don't know what to do.
  • I want to show the message, run my process, and dispose the message when the process is done.

How to achieve this in C# ?


回答1:


Create a simple form with the message (or expose a public property to be able to change the message, or a constructor with message parameter to pass it in) and show the form using this Show overload. Then disable the (entire) original (owner) form (or just disable the controls you don't want accesible).

So, in your "main" form do this:

Form f = new MessageForm();
f.Show(this);         //Make sure we're the owner
this.Enabled = false; //Disable ourselves
//Do processing here
this.Enabled = true;  //We're done, enable ourselves
f.Close();            //Dispose message form

Also, consider using a BackgroundWorker.




回答2:


create custom form, and write own behavior




回答3:


Create a custom form set it to minimal styles etc. Make sure it knows when the process is complete, say by passing in a reference to the process and checking it every now and then.




回答4:


One way you could do it is create a worker class that raises an event when it is finished.

execute the worker class in a new thead so it runs it the backgroud.

create the modal form with a method to close it as the event handler for the "finished" event. This way the ui still works and responds and the form will close once the worker thread is finished.



来源:https://stackoverflow.com/questions/11502338/how-to-display-message-box-without-any-buttons-in-c-sharp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!