将表单存储在列表中,并在c#事件中更改其位置

本文关键字:事件 位置 存储 表单 列表 并在 | 更新日期: 2023-09-27 18:16:06

我继承了很多代码,并且遇到了以下问题:当主表单移动时,让位于"主表单"上特定位置的表单移动。

现在,我有一个列表存储每个表单,将躺在我的表单,和masterForm.ResizeEnd事件处理程序。在事件处理程序中,我尝试遍历列表并将.location属性设置为masterForm.location+常量。但这行不通。我试过各种各样的方法,但都没用。

代码:

public List<Form> openForms=new List<Form>(1);
private void addForm(Form argument)
{
    openForms.Add(argument);
}
private void masterForm_ResizeEnd(object sender, System.EventArgs e)
{
    for(int i=0; i<openForms.Count; i++) 
        openForms[i].Location = new system.drawing.point(this.location.x+constant, this.location.y+constant);
}

将表单存储在列表中,并在c#事件中更改其位置

它应该工作,我看你的代码没有明显的错误。尝试用

设置位置
openForms[i].Invoke((MethodInvoker)delegate{openForms[I].Location = new system.drawing.point(this.location.x+constant, this.location.y+constant);});