Обращение из одного окна к другому
Из окна класса F_Main я могу обратиться к другому окну, инкапсулировав в классе F_Main поле
И при создании окна класса TMyForm я пишу:
А как мне из окна класса TMyForm обратиться к окну класса F_Main?
Из окна класса F_Main я могу обратиться к другому окну, инкапсулировав в классе F_Main поле
И при создании окна класса TMyForm я пишу:
А как мне из окна класса TMyForm обратиться к окну класса F_Main?
Можно конкретнее, а то не совсем понятная, идея. Что значит "обратится к окну класса". Может вы имеете ввиду, вызвать метод класса, то в данном случае можно использовать делегаты. Если оно так и есть, то думаю, что программа плохо спроектирована.
В таком случае, просто создай указатель(раз его его нет). Используй делегаты, вот собственно и все. А вообще, если вторая форма не воздействует на первую, нужно просто создать отдельный класс, который и будешь использовать обеими формами.
Пожалуйста, если несложно напишите простенький пример, как из окна класса MyForm я могу изменить цвет окна класса MainForm
Пожалуйста, если несложно напишите простенький пример, как из окна класса MyForm я могу изменить цвет окна класса MainForm
С точки зрения архитектуры языка С# и платформы .NET, было бы правильнее cоздать отдельный класс и использовать его обеими формами, а на мой взгляд еще и проще в плане разбора кода. Но вы хотите создать глобальный указатель,в С# нет глобальных указателей, используй unsafe код, где возможно использование указателей, но это самый худший вариант из всех. А почему вас не устраивает использование делегатов? И еще один вопрос, методы к которым вы хотите обращатся, являются методами на уровне класса или объекта?
public static delegate void MSW(string m);
public static event MSW Mess;
В окна формы вписать обработчик нашего собития,
А в другую - вызов:
Program.Mess("Message");
Если нужно вызвать какой-то конкретный встроенный публичный метод родительской формы то:
Инкапсуляция в родительской форме.
Form^ ChildForm;
public ref class ChildForm : public Form
{
private: Form^ parentForm;
public: ChildForm(Form^ parent)
{
InitializeComponents();
this->parentForm = parent;
}
}
Если нужно вызвать какой-то самописный метод, то либо в дочерней форме принимаем в качестве параметра Form1 (по дефолту создается в CLR App.), либо мутим на стороне интерфейс, наследуем его родительской форме, передаем в качестве параметра Object^ дочерней форме this, а далее уже инкапсулируем нужный интерфейс в дочерней форме.
Как говорится
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
(c) MSDN :D