在后台处理时,阻止用户点击表单上的任何内容的最佳方法是什么?

Ali*_*Tor 1 c# windows-forms-designer winforms busyindicator busy-waiting

我正在研究Youtube Mp3转换器.Mp3转换需要几秒钟,我希望用户无法单击表单上的任何控件.我已经完成Control.Enabled = false了所有控制的使用,但我认为这种方式不专业,似乎不适合视觉.有没有什么好方法可以做到这一点?

Log*_*rfo 7

正如评论所说,你可以有一个模态形式:

yourModalForm.ShowDialog();
Run Code Online (Sandbox Code Playgroud)

它没有标题栏按钮或根本没有标题栏,转换完成后会自动关闭.

或者您可以Enabled按照自己的建议使用属性,但不能用于每个控件,您可以立即为整个表单执行:

this.Enabled = false;
Run Code Online (Sandbox Code Playgroud)

this如果您处于正确的环境中,请记住这是您的表格.

我还建议您更改表单光标,如下所示:

this.Cursor = Cursors.WaitCursor;
Run Code Online (Sandbox Code Playgroud)

当你的工作完成后,你所要做的就是:

this.Enabled = true;
this.Cursor = Cursors.Default;
Run Code Online (Sandbox Code Playgroud)