【问题标题】:which events does BringToFront() method trigger?BringToFront() 方法会触发哪些事件?
【发布时间】:2012-12-13 09:32:30
【问题描述】:

我有两个表单,Form1 和 Form2,每当我在 Form1 中调用 Form2.BringToFront() 时,我都想在 Form2 中做一些事情。

class Form1 : Form
{
    button1_MouseClick()
    {
        Form2.BringToFront();
        // trigger an event an do something in Form2 
    }
}

class Form2 : Form
{
    UnknownEvent_EventHandler()
    {
        //do something
    }
}

但有关 BringToFrontMethod 的文档并没有说明此方法会触发哪些事件。

请注意,我不想在 Form2 上创建公共方法并调用它。

【问题讨论】:

  • 你尝试过 Move 事件吗?
  • @Steve:是的,没用,但是谢谢。

标签: c# .net winforms event-handling


【解决方案1】:

好吧,它不会直接触发我所知道的,但由于其 Activation(focus) 被更改,Form.Activated 事件将触发。你可以找到代码文档here。这是一个小示例代码:

private void Form1_Activated(object sender, System.EventArgs e)
{
   //What do you want to happen?
}

如果这对您有帮助,请务必将其标记为答案。

【讨论】:

  • 帮助很大。从您写的链接:要在运行时使用代码激活表单,请调用 Activate 方法。您可以将此事件用于诸如在未激活表单时根据对表单数据所做的更改来更新表单内容等任务。这就是我想要的。谢谢
  • 如果有人好奇,我使用了“Activate() 方法”和“Activated Event”,它起作用了
  • 它也对我有用。谢谢你。这个问题表达得很好,这个答案准确地捕捉到了所问的内容。此外,还提供了一个可行的解决方案。
【解决方案2】:
 Form2 form2 = new Form2();
        private void button1_Click(object sender, EventArgs e)
        {
            form2.Show();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Application.OpenForms["Form2"].BringToFront();
        }

【讨论】:

  • 他不是在问如何将表格放在最前面。他在问如何检测表格何时被带到前面。不过,我不会降价。
  • 我很抱歉 :) 它是关于如何以这种方式调用另一个 Form 的建议。您可以使用任何方式使用Shown event -> (在首次显示表单时发生)Move event -> (在移动表单时发生) 但是你必须创建一些逻辑来完成你的任务:)
  • @JABFreeware 你有什么线索可以解决这个问题吗,你的评论是对的,我也面临同样的问题,那么有什么可能检测到它?
【解决方案3】:

这已经是一个较老的问题了,但我也遇到了..

只需在表单/控件中添加一个将自身置于最前面并从外部调用此方法的方法:

class Form1 : Form
{
    button1_MouseClick()
    {
        instanceOfForm2.ShowInFront();
    }
}

class Form2 : Form
{

    public void ShowInFront()
    {
        this.BringToFront();
        //Do whaterver you want after brought to front
    }
}

【讨论】:

    猜你喜欢
    • 2017-02-12
    • 2015-08-13
    • 2015-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多