form.show和form.Activate的区别

6
我想知道form.show()form.activate()之间的区别。
我有多个已打开的表单,我想激活我的表单,但它被另一个表单覆盖了,最好的方法是调用哪个代码:form.show()form.activate()

2
我投票关闭此问题,因为它不属于讨论范围,且可以通过简单搜索或查看文档得到答案。 - TheGeneral
这并不值得所有的踩。Activate和Show的文档并没有完全明确它们之间的区别。"将其置于前面"与"显示"是否不同?TopMost的文档甚至没有提到Activate,也不是一个显而易见的地方去查找。 - Rob Mosher
5个回答

5

Show()方法向用户显示表单。

Activate()方法将表单置于前台(即让表单获得焦点)。

例如:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 form2 = new Form2();
        form2.Show();
        this.Activate();
    }
}

上面的代码将通过调用form2.Show();显示form2,但由于this.Activate();的调用,form1将在form2前面(处于焦点状态)。
请参阅MSDN文档:

2

从文档中得知

Form.Activate 方法 ()

激活窗体会将其置于前台(如果该应用程序是活动的)闪烁窗口标题(如果该应用程序不是活动的)。该方法必须在窗体可见时才能生效。如果要确定应用程序中的活动窗体,使用 ActiveForm 属性或 ActiveMdiChild 属性(如果您的窗体位于多文档界面 (MDI) 应用程序中)。

Form.Show 方法

显示控件等效于将 Visible 属性设置为 true。调用 Show 方法后,Visible 属性返回 true 的值,直到调用了 Hide 方法。


回答

我有多个已经打开的窗体,我想激活我的那个在另一个窗体后面的窗体,使用哪种方法更好,form.show() 还是 form.activate()?

如果您的窗体已经打开,请使用 Activate 方法,这可能是您想要的。

提示:如果您想知道 .net 方法的作用,只需在谷歌中输入它,通常会首先显示帮助信息,以及大量其他问题和答案。


@JeremyThompson 是的,你会的,这就是我们学习编程的方式。 - TheGeneral
2
加一,我甚至没有互联网学习编程...我不得不阅读一套像电话簿大小的百科全书来学习编程。 - Jeremy Thompson
@JeremyThompson 哈哈,是的,谷歌就像书的后面,直接跳到索引。 - TheGeneral

1
根据msdn Form.Activate()Form.Show()
Activate():激活窗体,如果这是活动应用程序,则将其置于前端;如果不是,则闪烁窗口标题。该方法只对可见窗体有效。
Show():显示非模态窗体。使用此方法时,窗体的Owner属性设置为owner。非模态窗体可以使用Owner属性获取有关拥有窗体的信息。调用此方法相当于设置非模态窗体的Owner属性,然后调用Show()方法。显示窗体等同于将Visible属性设置为true。调用Show方法后,Visible属性返回true值,直到调用Hide方法。
您可以访问上述链接以获取更多信息。
现在,如果您能更清晰地表达您的目的,我们可以以“具体的方式”帮助您。
阅读编辑后,“激活”是最好的选择,而且我的答案与@TheGeneral完全相同。

1

form.activate() 激活表单,这意味着如果您有输入元素(如文本框),它将专注于该特定表单,而不考虑其他任何表单。例如,如果您显示了表单1、2和3。如果您激活表单2,则表单2将成为用户的焦点。

如果您使用form.show(),它只会向用户显示/显示表单。因此,在用户参与方面,activate()具有最高优先级。


0

Form.Show() 创建一个新的窗体实例,而 Form.Activate() 将已经存在的窗体置于前台。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接