Доступ к переменной внутри вкладки формы

Здесь я столкнулся с проблемой, я динамически добавляю форму на вкладку. Я должен получить статическую переменную из этой формы.

Я использовал код, но я не могу получить точное значение, которое мне нужно.

 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] -> флажок приемника

как получить значение этой переменной.

Заранее спасибо.

1 ответ

Решение

Вы не знаете, что такое ошибка, или не можете сказать, какое именно значение вам нужно.

если переменная public static bool он принадлежит классу, а не экземпляру, будучи статичным, поэтому, когда вы пишете:

hyber.Form1.receiverflag

Вы берете значение переменной независимо от конкретного экземпляра Form1, с которым имеете дело, не имеет значения, если вы создали один экземпляр и добавили его в TabPage, эта переменная всегда существует, даже если вы не создаете ни одного экземпляра.

если вы получаете неправильные / неожиданные результаты, возможно, в конечном итоге другой поток или другой метод изменили значение этого статического поля, и это отражается повсюду в вашем приложении.

Изменить: если бы он не был статичным, вы могли бы, вероятно, получить то, что вы просите, таким образом:

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

if( yourForm1 != null && !yourForm1.receiverflag)
{
  ....
Другие вопросы по тегам