|    Модератор   0
            - 11.12.2012 - 14:14
           |      
                    Суть такая есть программа с несколькими формами, на главной форме есть компонента serial port , процедура обработки приема данных из порта ну и всякая фигня прочая ) не могу понять как с остальных форм обращаться к компонетам и процедурам главной формы.  вообще не могу даже условно взять текст с какого нить Лейбела. как объявить обработчик принятых данных с порта, форму?  |    |  
|     1
            - 12.12.2012 - 04:49
           |  Ну как бы и как везде в ООП, у тебя должна быть ссылка на эту форму, чтобы вызывать ее методы и свойства. Тобишь либо при создании этой формы присваивать ее какой-нибуть статической общедоступной переменной, либо передавать при создании других форм ссылку на нее, ну или еще как извратиться. |   |  
|    Модератор   2
            - 12.12.2012 - 07:48
           |     
			
			
                1-Sserj >это то понятно)) как это сделать? просто в дельфях например в интерфейс добавил и все не паришся насколько помню. в VB тоже вроде объявил глобально и доступна. а ту хз  |    |  
|     3
            - 12.12.2012 - 10:57
           |  (2) Ну к примеру сделай класс со статическими методами setFormWithPort и getFormWithPort() ну и внутри поле статическое с типом этой формы, туда его запихивай и доставай, можно конечно и просто поле открытое, но это как то не гламурно :) |   |  
|     4
            - 12.12.2012 - 11:06
           |     
			
			
                3-Sserj > + Вообще по хорошему это должен быть класс с контейнером где хранятся ссылки на все открытые формы твоей программульки и их можно былобы получать по какому-либо ключу, так тебе будет легко допустим обойти все открытые формы и сделать с ними что-нибуть, допустим свернуть или наоборот развернуть все, или "закрыть все окна", вывести что-то на передний план или открыть если чего-то не открыто, вообщем то что является нормой во всех MDI приложениях :)  |    |  
|     5
            - 12.12.2012 - 12:36
           |     
			
			
                Если WinForms, то:  1. Объявить нужный компонент на форме как public (либо создать public только get свойство, через которое давать ссылку на компонент). 2. Доступ к объекту формы организовать либо через Application.OpenForms, либо в Program.cs объявить public static свойство и в нем возвращать ссылку на главную форму. Пример: ----- static class Program ** /// <summary> /// Главная точка входа для приложения. /// </summary> [STAThread] static void Main() ** Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(fals e); Form1 v_main_form = new Form1(); MainForm = v_main_form; Application.Run(v_main_form); ** static Form1 MainForm ** get; private set; ** ** ------ Если WPF, то доступ к главной форме через Application.MainWindow. ------ Мое ИМХО: если объект используется в нескольких формах приложения - его лучше не "кидать" на форму, а создавать как ресурс уровня всего приложения. Либо передавать его в другие формы через параметр конструктора формы в момент ее создания.  |    |  
|     6
            - 14.12.2012 - 14:46
           |     
			
			
                Привет Это здорово, это удивительный информацию, я также искал для этого. С уважением  |    |  
|    Модератор   7
            - 17.12.2012 - 09:32
           |  вроде разобрался всем спасибо |   |  
|     8
            - 17.12.2012 - 18:42
           |     
			
			
                Через делегаты можешь Примерно так объявить: //Описание делегатов для связи с главной формой и вывода сообщений из потоков delegate void addText(string text); // Добавление элемента в ListBox1 private void addItemToListBox1(string text) ** listBox1.Items.Add(text); ** Так вызывать: if (listBox3.InvokeRequired) ** listBox3.Invoke(new addText(addItemToListBox1), new object[] ** "Отключение клинета. IP: " + rep.Address.ToString() **); **  |    |  
|     9
            - 17.12.2012 - 18:44
           |     
			
			
                упс, немного разный код скопировал. в вызове listBox3 заменить на listBox1 (подлежащее замене выделено жирным)  |    |  
 Интернет-форум Краснодарского края и Краснодара |