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

Ваш аккаунт

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

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

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

Объектная модель C#

61K
18 сентября 2010 года
CrazyPHP
8 / / 18.09.2010
Блин, совсем не понятно как с этим совсем работать.

Вот я создал свой класс в отдельном .cs фале... в каком месте программы мне создавать экзепляр это класса чтоб потом в течении всей работы программы пользоваться им? и как мне например из этого класса обращаться к объектам с формы (Edit-ам и т.д.) а то когда я пытаюсь это сделать мне ошибку выдаёт ... :(

???? :confused:
2.1K
18 сентября 2010 года
Norgat
452 / / 12.08.2009
Цитата:
в каком месте программы мне создавать экзепляр это класса чтоб потом в течении всей работы программы пользоваться им?



в классе гл. формы.

Цитата:
и как мне например из этого класса обращаться к объектам с формы (Edit-ам и т.д.) а то когда я пытаюсь это сделать мне ошибку выдаёт ...



передавай на них ссылку(на Edit'ы свои) в конструктор или методы класса и храни её(ссылку) если нужно.

61K
18 сентября 2010 года
CrazyPHP
8 / / 18.09.2010
Цитата: Norgat
в классе гл. формы.



передавай на них ссылку(на Edit'ы свои) в конструктор или методы класса и храни её(ссылку) если нужно.


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

вот так что ле в конструкторе другого класса написать:

 
Код:
//доступ к форме главной
this.Form_1 = new Form1();
//
2.1K
18 сентября 2010 года
Norgat
452 / / 12.08.2009
Цитата: CrazyPHP
так а как эту ссылку передать? я ведь даже не могу никакой метод с класса главной формы вызвать и к свойствам не могу обратится... ничё не пойму....



почему? что мешает в конструкторе формы инициализировать нужные тебе объекты?

и таки да, что делаешь? и что знаешь об ООП вообще?

типа примера(хотя реально так делать не нужно, т.к. вообще говоря объекты не относящиеся к GUI ничего про формочки то знать и не должны):

есть форма Form1 на ней 2 текстбокса + кнопка.
есть собственный класс:

Код:
class myReplace
    {
        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:

добавить поле:
 
Код:
private myReplace Rpl;

в конструктор добавить:
 
Код:
public Form1()
        {
            InitializeComponent();
           [COLOR="Blue"] Rpl = new myReplace(this.textBox1, this.textBox2);[/COLOR]
        }

ну и на нажатие кнопки повесить:
 
Код:
private void button1_Click(object sender, EventArgs e)
        {
            Rpl.myRepl();
        }


чем такой вариант то не подходит?)
61K
18 сентября 2010 года
CrazyPHP
8 / / 18.09.2010
Цитата: Norgat
почему? что мешает в конструкторе формы инициализировать нужные тебе объекты?

и таки да, что делаешь? и что знаешь об ООП вообще?



ну я не пойму... вот прога запустилась, создала объект [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 и фиг поймёшь как это работает ....

61K
18 сентября 2010 года
CrazyPHP
8 / / 18.09.2010
Цитата:
типа примера(хотя реально так делать не нужно, т.к. вообще говоря объекты не относящиеся к GUI ничего про формочки то знать и не должны):

есть форма Form1 на ней 2 текстбокса + кнопка.
есть собственный класс:


ВО! Сделал по вашему примеру.... всё получилось! Я передал в конструктор [COLOR="DarkGreen"]XmlCommander[/COLOR]-ра, саму форму целиком:

 
Код:
public Form1()
        {
            InitializeComponent();
            [COLOR="DarkGreen"]XmlCommander = new XmlInterface(this);[/COLOR]
        }


а вот конструктор:

 
Код:
public XmlInterface(Form1 main_form) {
            //доступ к форме главной
            this.Form_1 = main_form;
            //
        }


и всё сработало.... это и есть передача ссылки?
2.1K
18 сентября 2010 года
Norgat
452 / / 12.08.2009
Цитата: CrazyPHP
фиг поймёшь как это работает ....


читай литературу, другого пути нет.

вообще говоря ты вызываешь функционал своих классов Из формы, а не форму из классов.

Соотв. передаёшь методам своих классов ссылки на контролы с формы, а лучше вообще передавать не ссылки на контролы формы, а данные(строки там, числа и т.п.), т.к. это более правильно(принцип разделения логики программы и её интерфейса).

Цитата:
и всё сработало.... это и есть передача ссылки?



да, в переменной, на самом деле, хранится не объект а ссылка на этот объект в куче(справедливо для классов, но не для структур).
но тут лучше почитать литературу по C#, т.к. в двух словах описать это проблематично.

61K
18 сентября 2010 года
CrazyPHP
8 / / 18.09.2010
Цитата:
Соотв. передаёшь методам своих классов ссылки на контролы с формы, а лучше вообще передавать на ссылки на контролы формы, а данные(строки там, числа и т.п.), т.к. это более правильно(принцип разделения логики программы и её интерфейса).


ох... к такому будет сложно привыкнуть после PHP... и мне вообще просто кажется это излишней работаой, писать какие то дополнительные методы для получения каких то отдельных данных, в сто раз легче и быстрее напрямую обратиться и всё... мне просто не надо каких то дополнительных обработок данных, типо все эти принципы безопасности и т.п. ... )))))

61K
18 сентября 2010 года
CrazyPHP
8 / / 18.09.2010
Цитата:
да, в переменной, на самом деле, хранится не объект а ссылка на этот объект в куче(справедливо для классов, но не для структур).
но тут лучше почитать литературу по C#, т.к. в двух словах описать это проблематично.


Да я на intuit читал всё это дело... но там как то странно так всё это даётся. что я только с вашим примером всё таки хоть что то понял...

2.1K
18 сентября 2010 года
Norgat
452 / / 12.08.2009
Цитата: CrazyPHP
Да я на intuit читал всё это дело... но там как то странно так всё это даётся. что я только с вашим примером всё таки хоть что то понял...



на интуите, по большей части, довольно посредственный материал находится к сожалению...

имхо, лучше брать книжки издательств O'REILLY или apress и читать их(в русском или английском варианте), там обычно качественные книги издают.

5
19 сентября 2010 года
hardcase
4.5K / / 09.08.2005
Автору срочно гуглить персоналию Троелсен и прекратить позориться на форуме.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог