【问题标题】:Confusing in event Form_Load令人困惑的事件 Form_Load
【发布时间】:2013-11-08 15:32:01
【问题描述】:
private void Form1_Load(object sender, EventArgs e)
    {
        MessageBox.Show("Luanching.... This may take a few second");
............
    }

如果我不在消息框中单击“确定”,我的发件人将不会显示 (它会等到我点击) 如何解决这个问题 如何使表单首先显示或如何使不等待单击确定

【问题讨论】:

    标签: c# .net winforms form-load


    【解决方案1】:

    另一种选择是在表单上放置一个后台工作人员。然后在事件中,双击在代码中创建的方法中的“DoWork”,放置 messagebox.show。 这样,消息框将显示在单独的线程中,并且表单的加载将继续

    【讨论】:

    • 不说了。我有一个程序一次使用大约 25 个单独的线程,每个线程只有几 kb 的内存(这是一个线程池)。正是您在胎面中所做的事情可能会导致内存使用。
    【解决方案2】:

    简单,只需将MessageBox代码移至Shown事件

    private void Form1_Shown(object sender, EventArgs e)
    {
        MessageBox.Show("Luanching.... This may take a few second");
    }
    

    【讨论】:

    • 如果您没有正当理由,请不要投反对票!
    • 确实是 Sriram Sakthivel。您的回答是解决问题的最佳选择。
    • @real_yggdrasil 我不知道哪个 numty 投了反对票 :(
    • @SriramSakthivel,我不是反对者,但可能在Shown 事件中使用它会破坏消息的目的。 Form_Load 可能需要 2 分钟,在此期间用户应该能够看到此消息。使用您的代码,Form_Load 完成工作后,用户将看到该消息
    • @Habib 你是绝对正确的。我刚刚回答了如何解决这个问题如何让表单首先出现?。答案仅取决于问题。如果 OP 询问如何加快表单加载或类似的事情,我的答案是将 CPU 密集型代码移动到另一个线程或使用“启动画面”
    【解决方案3】:

    您不需要使用MessageBox,您必须创建一个新的Form,它会显示一条消息。 新的Form 将在新的消息循环上运行,因此不会阻塞 ui,如果像这样调用它

    myForm.Show() ,其中myForm 是您的表单实例。

    【讨论】:

      【解决方案4】:

      事件Form1_Load 与它的发音完全相同,因此如果您在其中插入某种MessageBoxForm 只会在响应之后加载

      考虑在Form 加载之后使用另一种方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-21
        • 2022-01-17
        • 1970-01-01
        • 2018-02-26
        • 1970-01-01
        • 1970-01-01
        • 2019-01-31
        • 2012-05-15
        相关资源
        最近更新 更多