如下:当一个表格被激活时,它们全部被激活,当一个表格被最小化时,它们都被最小化,等等。
答案 0 :(得分:3)
只能激活一个窗口。你在另外询问'拥有'窗户。使用Show(所有者)重载。它确保当用户激活主(所有者)窗口时,所有其他窗体也移动到前台。当主窗口最小化时,最小化。
答案 1 :(得分:1)
我建议使用以下解决方案,希望它有用:
首先:为兄弟表单定义一个接口:
public interface IFormBrothers
{
List<IFormBrothers> Brothers { get; set; }
}
然后为您希望它们成为兄弟的所有表单实现接口,如下所示:
public partial class FormB : Form, IFormBrothers
{
public List<IFormBrothers> Brothers { get; set; }
}
public partial class FormA : Form, IFormBrothers
{
public List<IFormBrothers> Brothers { get; set; }
}
然后添加以下扩展名:
public static class BrothersExntension
{
public static void SetAsBrother(this IFormBrothers form, IFormBrothers brother)
{
if (form.Brothers == null)
form.Brothers = new List<IFormBrothers>();
if (form.Brothers.Contains(brother))
return;
form.Brothers.Add(brother);
brother.SetAsBrother(form);
(form as Form).SizeChanged += (s, e) =>
{
foreach (var item in form.Brothers)
(item as Form).Width = (s as Form).Width;
};
}
}
注意:SizeChanged只是一个示例,如果可以,可以为所有共享行为重复
最后:不要忘记将表格添加到他的兄弟一次:
var f1 = new FormA();
var f2 = new FormB();
f1.SetAsBrother(f2);
f1.Show();
f2.Show();
注意:将f1添加到f2就足够了,因为f2会在内部添加f1。
祝你好运。答案 2 :(得分:0)
我会使用表格的通用列表(类的静态成员)(List<Form>
)并将属性设置为始终相同。例如关于最小化事件等等......