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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как обратиться к MDIChild 
V
    Опции темы
ДобренькийПапаша
Дата 20.7.2009, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

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



Есть MDI-контейнер, в нём StripMenu тут есть возможность выбора отображения информации в проводнике (в ListView находящемся в дочерней форме) крупными значками, мелкими ну и так далее.

Как грамотно менять свойство View в дочерней форме из родительской?

Код

 private void MainForm_Load(object sender, EventArgs e) //прогрузка контейнера
        {
            #region Открытие дочерней формы
            Explorer ex = new Explorer(Login);
            ex.MdiParent = this;
            ex.WindowState = FormWindowState.Maximized;
            ex.Show();
            #endregion
            крупныеЗначкиToolStripMenuItem.Checked = true;
        }


Надо из событий нажатия menuItem обращаться каким-то макаром к объекту ex? Или есть какой-то гуманный способ (через свойство какое-нибудь)?

Это сообщение отредактировал(а) ДобренькийПапаша - 20.7.2009, 15:55


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
diadiavova
Дата 20.7.2009, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



MdiChildren возвращает коллекцию дочерних форм. В ней и  ищи.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
ДобренькийПапаша
Дата 20.7.2009, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

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



Код

Form[] curchild=this.MdiChildren;


Дочерняя форма в curchild[0]. Проверил. Но обратиться к её объектам не могу. Например:
curchild[0].ExploreView не проходит, ExploreView не видит (это объект ListView), объявлен он как public...
Почему? И что делать?)))


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
Любитель
Дата 20.7.2009, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

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



Надо просто прокастить curchild[0] к типу твоей формы.


--------------------
PM MAIL ICQ Skype   Вверх
diadiavova
Дата 20.7.2009, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Цитата(ДобренькийПапаша @  20.7.2009,  16:29 Найти цитируемый пост)
Но обратиться к её объектам не могу. Например:
curchild[0].ExploreView не проходит, ExploreView не видит (это объект ListView), объявлен он как public...
Почему? И что делать?))) 

Потому что MdiChildren возвращает коллекцию, каждый элемент которой имеет тип Form, а в этом типе нет такого метода. Если ты точно знаешь, что нужная форма имеет тип, например MyForm, то и приведи её к этому типу, тогда всё будет доступно
Код

MyForm mf = (MyForm)curchild[0];

И с этим работай.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Bladerender
Дата 20.7.2009, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 19.7.2007

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



По опыту скажу что не все так просто. Если ты хочеш доступатся к например ТекстБокс1 на MDIChild, то подкастить к форме можно будет,  но самих елементов там не увидиш. Нужно будет юзать MyForm.Controls.Find() и получать в итоге нужный контрол и потом уже к нему обращаться по назначению, типа EditBox.Text = "xxx".
PM MAIL   Вверх
diadiavova
Дата 20.7.2009, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Bladerender, если контрол объявлен как private, то конечно(а по-умлчанию так и есть).  У топикастера он public, оптимальный вариант internal

Добавлено через 2 минуты и 19 секунд
А ещё лучше оставить private, а доступ получать через свойства.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




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


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

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