如何从Event函数更改动态创建的属性?

时间:2014-08-13 18:41:26

标签: c#

我有一个使用我的代码动态创建的FlowLayoutPanel,我希望在加载和重新调整大小时将面板重新定位到我的屏幕中心,就像我能够使用我的标签一样。

问题是因为flp不在Form2.Designer.cs中,当我用与标签相同的方式调用它时出现错误。

错误1' SCA_Up_Tool.Form2'不包含' flp'的定义没有扩展方法' flp'接受类型' SCA_Up_Tool.Form2'的第一个参数。可以找到(你错过了使用指令或程序集引用吗?)

public partial class Form2 : Form
{
    public Form2(List<IPAddress> addresses)
    {
        InitializeComponent();

        FlowLayoutPanel flp = new FlowLayoutPanel();
        flp.AutoScroll = true;
        flp.FlowDirection = FlowDirection.TopDown;
        flp.Location = new System.Drawing.Point(12, 67);
        flp.AutoSize = false;
        flp.Height = 600;
        flp.Width = 1110;
        flp.WrapContents = false;
    }
}

    private void Form2_Load(object sender, EventArgs e)
    {
        this.label1.Left = (this.ClientSize.Width - this.label1.Width) / 2;
        this.flp.left = (this.ClientSize.Width - this.flp.width / 2);
    }

    private void Form2_SizeChanged(object sender, EventArgs e)
    {
        this.label1.Left = (this.ClientSize.Width - this.label1.Width) / 2;
        this.flp.left = (this.ClientSize.Width - this.flp.width / 2);
    }

1 个答案:

答案 0 :(得分:4)

将其移至外部范围。如果需要访问方法之外的变量,那么它不应该是局部变量。推广本地实例字段。

public partial class Form2 : Form
{
    private FlowLayoutPanel flp = new FlowLayoutPanel();
    public Form2(List<IPAddress> addresses)
    {
        InitializeComponent();    

        flp.AutoScroll = true;
        flp.FlowDirection = FlowDirection.TopDown;
        flp.Location = new System.Drawing.Point(12, 67);
        flp.AutoSize = false;
        flp.Height = 600;
        flp.Width = 1110;
        flp.WrapContents = false;
    }
}