为了账号安全,请及时绑定邮箱和手机立即绑定

C#从将被关闭的弹出窗体中获取变量

C#从将被关闭的弹出窗体中获取变量

C#
MYYA 2021-08-22 15:18:40
我有一个表单,其中填充了从主表单创建的一组 userControl。一旦按下按钮时弹出窗口关闭,我需要能够从主窗体访问这个 userControls 数组。如果我填写表单,然后在不关闭弹出窗口的情况下按下主表单上的按钮,则存在值。但是,如果我关闭弹出窗口,则值不存在。我的主要形式是静态的,所以我可以在其他形式中使用它的变量。弹出窗口的代码: public ScanChannel[] controls;    public ScanListSetup()    {        InitializeComponent();        int numChans = Convert.ToInt32(Form1.Self.numChannels.Text);        controls = new ScanChannel[numChans];        // Create the UserControls        for(int i = 0; i < numChans; i++)        {            controls[i] = new ScanChannel();        }        // Place them        for (int i = 0; i < numChans; i++)        {            controls[i].Location = new Point(13,(35+25*(i)));            this.Controls.Add(controls[i]);        }        doneButton.Location = new Point(82, 35 + (25 * (numChans + 1)));        this.Size =new Size(280, 110 + (25 * (numChans + 1)));    }    private void doneButton_Click(object sender, EventArgs e)        {            Form1.Self.setChannelsToScan(controls);        }我需要访问controls主窗体中的数组。主窗体的代码如下:private ScanChannel[] channelsToScan;private void configureScanListButton_Click(object sender, EventArgs e)    {        var form = new ScanListSetup();        form.Show(this);        scanListConfigured = true;        this.channelsToScan = new ScanChannel[Convert.ToInt32(numChannels.Text)];    }public void setChannelsToScan(ScanChannel[] arr)    {        for (int i = 0; i < arr.Length; i++)        {            this.channelsToScan[i] = arr[i];        }    } private void scanButton_Click(object sender, EventArgs e)    {        System.Diagnostics.Debug.WriteLine("Test: " + this.channelsToScan[0].getDeviceType());        // THIS PRINTS AN EMPTY STRING    }因此,如果scanButton在弹出窗体仍然打开时单击 Debug writeLine 会输出正确的值。但是,如果我在单击doneButton弹出窗体上的后关闭窗体,则 Debug writeLine 输出Test:没有其他内容。对此的任何帮助将不胜感激。谢谢。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 340 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信