Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在另一个窗体中选中复选框后,如何使另一个窗体始终位于顶部?_C# - Fatal编程技术网

C# 在另一个窗体中选中复选框后,如何使另一个窗体始终位于顶部?

C# 在另一个窗体中选中复选框后,如何使另一个窗体始终位于顶部?,c#,C#,您好,我再次开发另一个应用程序,在该应用程序中,我有两个表单-设置和主表单,我在设置表单表单2中始终处于顶部,但我希望它在表单1中始终处于顶部,我如何才能做到这一点?我知道这是可能的,因为我在我的电脑上的其他应用程序中见过它,但我从来不知道它的代码。您应该在设置窗体上设置Form.TopMost属性,因此为了实现这一点,您必须在设置中将该属性设置为false,并在主窗体上将其设置为true,在复选框上选中事件。试试这个: private void checkBox1_Checked(object

您好,我再次开发另一个应用程序,在该应用程序中,我有两个表单-设置和主表单,我在设置表单表单2中始终处于顶部,但我希望它在表单1中始终处于顶部,我如何才能做到这一点?我知道这是可能的,因为我在我的电脑上的其他应用程序中见过它,但我从来不知道它的代码。

您应该在设置窗体上设置Form.TopMost属性,因此为了实现这一点,您必须在设置中将该属性设置为false,并在主窗体上将其设置为true,在复选框上选中事件。试试这个:

private void checkBox1_Checked(object sender, EventArgs e)
{
    var mainForm = Application.OpenForms.OfType<MainForm>().FirstOrDefault();
    if(mainForm != null)
    {
        this.TopMost = !checkBox1.Checked;
        mainForm.TopMost = checkBox1.Checked;
    }
}

希望有帮助

在第二个参数的构造函数中,可以采用最上面的形式作为参数

其代码如下所示:

private MainForm mf = null;

public Settings(MainForm mf) => this.mf = mf;

public void SomeCheckBoxTicked(object sender, EventArgs e) => this.mf.TopMost = true;

将对主窗体的引用传递到设置窗体,则应与MainFormReference一样简单。TopMost=true;您还可以执行Application.OpenForms[MainFormName].TopMost=true;即使启用了form.TopMost,也无法保证它始终有效。我在代码的这一部分遇到了一个错误:oftypes,您还必须使用System.Linq添加reference@Naix你把它放在你的设置窗体类中。当然,您还需要设置在将复选框单击到SomeCheckBoxTicked时调用的方法。