Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача текстовой строки через класс 
V
    Опции темы
XavierElf
  Дата 30.3.2007, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 24.1.2007
Где: г. Тверь

Репутация: 1
Всего: 1



Может неправильно выразился, но хочу получить следующее:
Имеется 3 класса контрола:
1) MyControlPaint - класс, в котором происходит вся отрисовка контрола
2) MyControlInit - класс определяющий последовательность отрисовки контрола и вызывающий метод Paint() класса MyControlPaint
3) MyControl - основной класс контрола, в котором происходит вывод контрола на "свет божий" smile и определяются все события на которые будет реагировать контрол.
Вопрос в следующем: как  мне передать строку из основного класса в класс отрисовки, если напрямую они не сообщаются?

--------------------
Даешь открытые исходники!
PM MAIL ICQ   Вверх
Sartorius
Дата 30.3.2007, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



 Вариантов можно предложить много....
 Ну хотя бы так : при создании объекта MyControlPaint  в него передается ссылка на MyControl , который он будет обслуживать. Не хочешь делать строчку публичной - сделай MyControlPaint   другом.

Это сообщение отредактировал(а) Sartorius - 30.3.2007, 15:49
PM MAIL ICQ   Вверх
XavierElf
Дата 30.3.2007, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 24.1.2007
Где: г. Тверь

Репутация: 1
Всего: 1



А не подскажете, как в шарпе объявить класс другом?
--------------------
Даешь открытые исходники!
PM MAIL ICQ   Вверх
Idsa
Дата 30.3.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 4
Всего: 62



Цитата(XavierElf @  30.3.2007,  16:43 Найти цитируемый пост)
А не подскажете, как в шарпе объявить класс другом?

Такая тема уже была на форуме не так давно... Суть организации дружественных методов сводится к тому, что мы делаем метод internal и загоняем класс, содержащий этот метод, в одну сборку с классом, к которому он должен быть дружественным. Юзаем же эти два класса из другой сборки.

Это сообщение отредактировал(а) Idsa - 30.3.2007, 16:55


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
XavierElf
Дата 30.3.2007, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 24.1.2007
Где: г. Тверь

Репутация: 1
Всего: 1



Ничего понять не могу, сделал так:
Код

//MyControl class
...
#region Text property
string _text;
[Browsable(true)]
public override string Text 
{
    get { return _text; }
    set { _text = value; }
}
#endregion
...

//MyControlPaint class
...
MyControl.Controls.MyControl _mainOwner;
...
MyControlPaint(MyControl.Controls.MyControl mainOwner)
{
    _mainOwner = mainOwner;
}
...
public override bool Paint(Graphics g, RectangleF boundingRect)
{
...
    DrawText(_mainOwner.Text, _mainOwner.Font,
            new SolidBrush(_mainOwner.ForeColor),
            _mainOwner.Format, g, boundingRect);
...
}

Ничего не получается - текста не видно.
Когда задаю явно:
Код

//MyControl class
...
#region Text property
string _text = "Control";
[Browsable(true)]
public override string Text 
{
    get { return _text; }
    set { _text = value; }
}
#endregion

Надпись на контроле появляется... Только не меняется... В чём проблема?
--------------------
Даешь открытые исходники!
PM MAIL ICQ   Вверх
XavierElf
Дата 30.3.2007, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 24.1.2007
Где: г. Тверь

Репутация: 1
Всего: 1



Всё, разобрался, у меня просто дизайнер не добавлял в редактор ни начального значения свойства, ни конечного. Проблему решил так:
Код

#region Text property
[Browsable(true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public override string Text
{
    get { return base.Text; }
    set { base.Text = value; }
}
#endregion


Это сообщение отредактировал(а) XavierElf - 30.3.2007, 18:11
--------------------
Даешь открытые исходники!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0459 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.