1

在这里我遇到了问题,我正在将表单动态添加到标签页中。我必须从该表单中获取一个静态变量。

我使用了代码,但我无法获得我需要的确切值。

 private void timer2_Tick(object sender, EventArgs e)
    {
        foreach (TabPage page in tabControl1.TabPages)
        {
            Control control = page.Controls[0];
            if(!hyber.Form1.receiverflag)//bug line
            {
                tabControl1.TabPages.Remove(page);

            }
        }
    }

在上面的图片观察窗口中

page.controls[0] ->[hyber.form1] -->receiverflag

如何获得该变量值。

提前致谢。

4

1 回答 1

1

您也不清楚错误行或说无法获得所需的确切值。

如果变量是 apublic static bool它属于类而不是实例,是静态的,所以当你写:

hyber.Form1.receiverflag

无论您正在处理的 Form1 的特定实例如何,您都在获取变量的值,如果您创建了一个实例并添加到 TabPage,那么即使您不创建任何实例,该变量也始终存在。

如果您得到错误/意外的结果,最终可能是另一个线程或另一个方法更改了该静态字段的值,这反映在您的应用程序中的任何地方。

编辑:如果它不是静态的,你可能会通过这种方式得到你所要求的:

var yourForm1 = (page.Controls[0] as hyber.Form1);

if( yourForm1 != null && !yourForm1.receiverflag)
{
  ....
于 2011-09-17T13:26:30.007 回答