访问表单标签页内的变量

发布于 2024-12-05 11:26:16 字数 600 浏览 3 评论 0原文

在这里我面临问题,我正在将表单动态添加到选项卡页中。 我必须从该表单中获取一个静态变量。

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

 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

如何获取该变量值。

提前致谢。

Here I'm facing problem,I'm adding form dynamically into tab page.
I have to get a static variable from that form.

i used code,but i can't get exact value which i need.

 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);

            }
        }
    }

In the above pic watch window

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

how to get that variable value.

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

等数载,海棠开 2024-12-12 11:26:16

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

如果变量是 public static bool ,它属于类而不是实例,是静态的,因此当您编写时:

hyber.Form1.receiverflag

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

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

编辑:如果它不是静态的,您可能可以通过以下方式得到您所要求的内容:

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

if( yourForm1 != null && !yourForm1.receiverflag)
{
  ....

you are nor clear about bug line or in saying can't get the exact value you need.

if the variable is a public static bool it belongs to the class and not to the instance, being static, so when you write:

hyber.Form1.receiverflag

you are taking the variable's value regardless of the specific instance of Form1 you are dealing with, does not matter at all if you have created one instance and added to the TabPage, that variable always exists even if you do not create any instance.

if you are getting wrong/unexpected results could be, eventually, that another thread or another method has changed the value of that static field and this reflects everywhere in your application.

Edit: if it was not static, you could probably get what you are asking in this way:

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

if( yourForm1 != null && !yourForm1.receiverflag)
{
  ....
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文