2014-11-28 5 views
1

Я пытаюсь ссылаться на булевую переменную в VBNet на другую форму, но она сбрасывается всякий раз, когда я ссылаюсь на нее. Например, на форме Form1:vb.net Переменные Получение Сброс

Dim flag as boolean = false 

, а затем где-то я поставил его к истинному Тогда, когда я называю это из другой формы:

если FORM1.flag = верно, то .....

но затем он переходит к 1 и сбрасывает флаг на false.

Как я могу сбросить свой флаг?

Благодаря

+0

Вы получаете доступ к Form1 через экземпляр по умолчанию, который, скорее всего, ** не ** тот же экземпляр, который отображается. Вам нужна ссылка на правильный экземпляр. Либо передайте этот экземпляр другой форме, либо сообщите, что состояние должно быть изменено с помощью других средств (например, другая форма, создающая пользовательское событие, на которое подписана Form1). –

+0

Стандартная ловушка VB.NET, этот код работает в рабочем потоке, поэтому создает экземпляр * new * объекта формы. Тот, который вы не видите, потому что его метод Show() никогда не вызывался. Изучение различия между типами (например, Form1) и ссылками на объекты может быть проблемой. –

ответ

1

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

Одним из простых способов использования глобальной переменной, такой как flag, является создание модуля (Project, Add Module) и объявление flag в этом модуле.

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

Смежные вопросы