Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как обратиться к объекту главного окна

19K
10 июля 2006 года
Стaнислaв
2 / / 07.07.2006
Есть два класса (в одном пространстве имён) - основной:
 
Код:
public class MainForm : System.Windows.Forms.Form

который описывает главное окно приложения, и дополнительный:
 
Код:
class AppLogic

который содержит некоторые ф-ии для работы приложения.

Вопрос в том, как мне обратиться из дополнительного класса к главному окну и его элементам? Единственная зацепка за объект формы:
 
Код:
Application.Run(new MainForm());

Но если переписать, как:
 
Код:
Form mainForm = new MainForm();
Application.Run(mainForm);
а потом в классе AppLogic обратиться как:
 
Код:
mainForm.Label1.Text = "OK";
то возникает ошибка:
Цитата:
The type or namespace name 'mainForm' could not be found (are you missing a using directive or an assembly reference?)


Подскажите чего я не допонимаю?

422
10 июля 2006 года
Dimarik
181 / / 12.02.2005
Если тебе надо использовать объект в этом же классе то замени mainform на this т.е.

this.label1.Text
242
10 июля 2006 года
Оlga
2.2K / / 04.02.2006
один из вариантов обратиться к форме и контролам находящимся на ней, передать в класс (из которого хотим обратиться) ссылку на данную форму(this формы). также читала, что все формы можно получить через Application.OpenForms, но у себя в студии (2003) не нашла этой функции.
19K
11 июля 2006 года
Стaнислaв
2 / / 07.07.2006
Цитата:
один из вариантов обратиться к форме и контролам находящимся на ней, передать в класс (из которого хотим обратиться) ссылку на данную форму(this формы)

Да, это я пробовал делать. Работает. Но проблема оказалась ещё и в другом. Дело в том, что метод AppLogic.Update вызывался таймером:

 
Код:
public AppLogic ()
{
    TimerCallback tc = new TimerCallback(Update);
    Timer timer = new Timer(tc,null,0,1000);
}
и из-за этого (я так думаю) Label1.Text присваивался, но не изменялся (визуально). Безуспешно перепробовал все варианты с Invoke/BeginInvoke. В итоге понял, что проще использовать таймер выбранный из дизайнера форм, т.к. с ним всё (почему-то) работает.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог