Объектная модель C#
Вот я создал свой класс в отдельном .cs фале... в каком месте программы мне создавать экзепляр это класса чтоб потом в течении всей работы программы пользоваться им? и как мне например из этого класса обращаться к объектам с формы (Edit-ам и т.д.) а то когда я пытаюсь это сделать мне ошибку выдаёт ... :(
???? :confused:
в классе гл. формы.
передавай на них ссылку(на Edit'ы свои) в конструктор или методы класса и храни её(ссылку) если нужно.
передавай на них ссылку(на Edit'ы свои) в конструктор или методы класса и храни её(ссылку) если нужно.
так а как эту ссылку передать? я ведь даже не могу никакой метод с класса главной формы вызвать и к свойствам не могу обратится... ничё не пойму....
вот так что ле в конструкторе другого класса написать:
this.Form_1 = new Form1();
//
почему? что мешает в конструкторе формы инициализировать нужные тебе объекты?
и таки да, что делаешь? и что знаешь об ООП вообще?
типа примера(хотя реально так делать не нужно, т.к. вообще говоря объекты не относящиеся к GUI ничего про формочки то знать и не должны):
есть форма Form1 на ней 2 текстбокса + кнопка.
есть собственный класс:
{
private System.Windows.Forms.TextBox inp;
private System.Windows.Forms.TextBox outp;
public myReplace(System.Windows.Forms.TextBox t1, System.Windows.Forms.TextBox t2)
{
inp = t1;
outp = t2;
}
public void myRepl()
{
outp.Text = inp.Text.Replace("1", "2");
}
}
который переносит текст из одного текстбокса в другой, с заменой единичек на двойки.
в Form1:
добавить поле:
в конструктор добавить:
{
InitializeComponent();
[COLOR="Blue"] Rpl = new myReplace(this.textBox1, this.textBox2);[/COLOR]
}
ну и на нажатие кнопки повесить:
{
Rpl.myRepl();
}
чем такой вариант то не подходит?)
и таки да, что делаешь? и что знаешь об ООП вообще?
ну я не пойму... вот прога запустилась, создала объект [COLOR="DarkGreen"]Form1[/COLOR], потом в конструкторе [COLOR="#006400"]Form1[/COLOR] я создал объект [COLOR="#006400"]XmlCommander[/COLOR]. И вот этот объект [COLOR="#006400"]XmlCommander[/COLOR] должен получить доступ к элементам из [COLOR="DarkGreen"]Form1[/COLOR].... вот и как в классе [COLOR="#006400"]XmlCommander[/COLOR] нужно обращаться к [COLOR="DarkGreen"]Form1[/COLOR]?
Я делаю прогу для взаимодействия с сайтом через его XML API .... сам сайт мой и API я писал на PHP ....
так вот, в PHP всё просто, никаких заморочек с доступом, чё надо просто закрыл privat-ом и не мучаюсь .... а тут наоборт всё по умолчанию в privat и фиг поймёшь как это работает ....
есть форма Form1 на ней 2 текстбокса + кнопка.
есть собственный класс:
ВО! Сделал по вашему примеру.... всё получилось! Я передал в конструктор [COLOR="DarkGreen"]XmlCommander[/COLOR]-ра, саму форму целиком:
{
InitializeComponent();
[COLOR="DarkGreen"]XmlCommander = new XmlInterface(this);[/COLOR]
}
а вот конструктор:
//доступ к форме главной
this.Form_1 = main_form;
//
}
и всё сработало.... это и есть передача ссылки?
читай литературу, другого пути нет.
вообще говоря ты вызываешь функционал своих классов Из формы, а не форму из классов.
Соотв. передаёшь методам своих классов ссылки на контролы с формы, а лучше вообще передавать не ссылки на контролы формы, а данные(строки там, числа и т.п.), т.к. это более правильно(принцип разделения логики программы и её интерфейса).
да, в переменной, на самом деле, хранится не объект а ссылка на этот объект в куче(справедливо для классов, но не для структур).
но тут лучше почитать литературу по C#, т.к. в двух словах описать это проблематично.
ох... к такому будет сложно привыкнуть после PHP... и мне вообще просто кажется это излишней работаой, писать какие то дополнительные методы для получения каких то отдельных данных, в сто раз легче и быстрее напрямую обратиться и всё... мне просто не надо каких то дополнительных обработок данных, типо все эти принципы безопасности и т.п. ... )))))
но тут лучше почитать литературу по C#, т.к. в двух словах описать это проблематично.
Да я на intuit читал всё это дело... но там как то странно так всё это даётся. что я только с вашим примером всё таки хоть что то понял...
на интуите, по большей части, довольно посредственный материал находится к сожалению...
имхо, лучше брать книжки издательств O'REILLY или apress и читать их(в русском или английском варианте), там обычно качественные книги издают.