Доступ к переменной внутри вкладки формы - PullRequest
1 голос
/ 17 сентября 2011

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

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

 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] -> receiveflag

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

Спасибозаранее.

1 Ответ

1 голос
/ 17 сентября 2011

у вас нет четких сведений об ошибке или что вы не можете получить точное значение, которое вам нужно.

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

hyber.Form1.receiverflag

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

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

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

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

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