Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / создание делегата / 12 сообщений из 12, страница 1 из 1
14.09.2004, 16:01
    #32694065
chess
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание делегата
День добрый!!
Есть переменная а. Требуется, при изменении ее значения, наступало следующее событие

void Test()
{
MessageBox.Show("Привет")
}

Как это сделать с помошью делегата?
...
Рейтинг: 0 / 0
14.09.2004, 16:15
    #32694105
snake
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание делегата
какого типа переменная?
...
Рейтинг: 0 / 0
14.09.2004, 16:17
    #32694113
chess
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание делегата
Переменная типа Color a.
...
Рейтинг: 0 / 0
14.09.2004, 16:42
    #32694189
snake
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание делегата
дальше копаем:
1. это локальная переменная метода,
2. член вашего класа (код доступен),
3. член не вашего класса (код которого не доступен - sealed)
...
Рейтинг: 0 / 0
14.09.2004, 16:43
    #32694195
snake
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание делегата
ps. я не много вопросов задаю?
...
Рейтинг: 0 / 0
14.09.2004, 17:07
    #32694271
chess
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание делегата
Ок. Попробую рассказать более подробно.
Есть форма (Form1), в нутри которого и находится данная переменна (private Color color;).
Из этой формы, вызывается второя форма (Form2), в которую в качесве параметра передается переменная color.
Во второй форме, происходит изменение данной переменной (хотя может и остаться без изменения) и в Form1 возвращается новое значение color.
...
Рейтинг: 0 / 0
14.09.2004, 17:19
    #32694309
maratic_net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание делегата
А когда вызывается MessageBox.Show("Привет"). После закрытия второй формы ? Тогда может после этого и проверить значение цвета и обойтись без событий. Или я что то не понимаю
...
Рейтинг: 0 / 0
14.09.2004, 17:27
    #32694347
chess
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание делегата
Вы все правильно понимаете, MessageBox.Show("Привет") действительно должен вызываться после закрытия второй формы. Но проблема в том, что я вторую форму вызываю с помощью Show(), а не с помощью ShowDialog(). для этого есть свои причины. И после закрытия второй формы, должно производиться проверка, произошло изменения переменной color, или нет, и если произошло, то вызвать MessageBox.Show("Привет").
...
Рейтинг: 0 / 0
14.09.2004, 17:31
    #32694360
maratic_net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание делегата
Ну тогда в первой форме сделать get-set -свойство типа Color и путь вторая форма работает только с ним...
...
Рейтинг: 0 / 0
14.09.2004, 17:33
    #32694368
maratic_net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание делегата
после закрытия второй формы, должно производиться проверка, произошло изменения переменной color, или нет, и если произошло, то вызвать MessageBox.Show("Привет").

ах да... может просто подписатьяс на событие закрытия второй формы.
MessageBox.Show("Привет") должен вызываться при каждом изменении свойства или только один раз при закрытии формы ?
...
Рейтинг: 0 / 0
14.09.2004, 18:56
    #32694551
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание делегата
form2
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public delegate void ChangeColorHandler(Color color);
public event ChangeColorHandler ChangeColor;

private void button1_Click(object sender, System.EventArgs e)
{
	ColorDialog cd = new ColorDialog();
	if(DialogResult.OK == cd.ShowDialog())
	{
		ChangeColor(cd.Color);
	}
}
form1
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Form2 f = new Form2();
f.ChangeColor += new colorgrid.Form2.ChangeColorHandler(f_ChangeColor);
f.Show();
............

private void f_ChangeColor(Color color)
{	 //обработка 
	this.BackColor = color;
}
----------------------------------------------------
зы. для конкретно поставленной задачи, имхо, надо передавать переменную как параметр ref color , и ни какие делегаты не нужны...
...
Рейтинг: 0 / 0
15.09.2004, 10:10
    #32695019
chess
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание делегата
Спасибо большое, то что нужно
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / создание делегата / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]