_Q12_ Ответов: 1

Как получить значение от другого объекта?


Я хочу это сделать, но не знаю как:

В форме 1 у меня есть пользовательский элемент управления "город".
Когда я нажимаю на квадрат внутри City control, появляется новый элемент управления под названием "BuildingsPage". На этой странице BuildingsPage я нажимаю на здание.
BuildingsPage закрыт, и в квадрате появляется выбранное мной здание.

Можете ли вы дать мне пример кода?
Или просто объяснить.
Спасибо.

Что я уже пробовал:

я представлю, если это необходимо.я представлю, если это необходимо.
в любом случае, это беспорядок.

1 Ответов

Рейтинг:
4

OriginalGriff

Добавьте событие в элемент управления BuildingsPage, который обрабатывает элемент управления City. При нажатии на страницу BuildingsPage она устанавливает свойство, показывающее, какое это здание, и вызывает событие.
Городской элемент управления обрабатывает событие, извлекает здание через свойство и закрывает элемент управления BuildingsPage.
Это тот же процесс, что и здесь: Передача информации между двумя формами, Часть 2: Ребенок-Родитель[^] но используя элементы управления вместо форм. Город-это родитель, здание-это дитя.


_Q12_

Спасибо вам, мистер Оригиналгрифф ! И счастливого Рождества !
Я думаю, что научился этому трюку у тебя давным-давно, но теперь, после небольшой паузы, я просто вспоминаю его. Я тоже попробую ваш оригинальный код. Теперь я счастлив, что заставляю его работать и достаточно чист. О, если вы можете улучшить его, пожалуйста, сделайте это !!!
Как всегда, спасибо!

мое решение:
//это квадрат, который я нажимаю
Point_x_MouseClick недействительным(объект отправителя, EventArgs в электронной)
{
buildingsPage1.blueprint_Building1.Click +=new EventHandler(blueprint_Building1_Click);
}

//это выбранное здание из списка !
/Я сделал это специально прямо сейчас, чтобы найти способ сделать это.
blueprint_Building1_Click недействительным(объект отправителя, EventArgs в электронной)
{
buildingsPage1.Видна = ложь;
point_1.Цвет Фона = Цвет.Синий;
}

OriginalGriff

Нет, это просто добавляет обработчик событий каждый раз, когда они нажимают на него: так что если они делают это дюжину раз, он будет выполнять обработчик дюжину раз!

И очень счастливого Нового года вам и вашим близким!

_Q12_

очень обалденно, но работает !
Теперь я каждый раз избегал делать событие из того другого события.
Мальчик, это трудно объяснить ....

Моя правильная вещь: (я надеюсь)
общественность города()
{
метод InitializeComponent();

...

//по какой-то странной причине я должен специально итерировать вручную и назначать
buildingsPage1.blueprint_Building1.Click+=new EventHandler(blueprint_Building1_Click);
buildingsPage1.blueprint_Building2. Click += new EventHandler(blueprint_Building2_Click);
buildingsPage1.blueprint_Building3. Click += new EventHandler(blueprint_Building3_Click);
}


Point_x_MouseClick недействительным(объект отправителя, EventArgs в электронной)
{
Пункт _ значения point_x = (пункт_) отправителя;
Значения point_x.Цвет Фона = Цвет.Красный;
ghostPoint = значения point_x;
строка c = Point_x.Name = ghostPoint.Name;
buildingsPage1.Видимое = истинное;

// buildingsPage1.blueprint_Building1.Click +=new EventHandler(blueprint_Building1_Click);
}



Point_ ghostPoint = new Point_ (); / / <<<<<;

blueprint_Building1_Click недействительным(объект отправителя, EventArgs в электронной)
{
buildingsPage1.Видна = ложь;
по каждому элементу (Ctrl управления в Управления)
{
если (ctrl.Имя == ghostPoint.Name)
{
Ctrl.BackColor = Цвет.Синий; / / и работает ! ура
}