2 / 2 / 0
Регистрация: 17.08.2009
Сообщений: 51
|
||||||||||||||||
1 | ||||||||||||||||
Доступ к элементам другой формы03.09.2009, 15:20. Показов 27183. Ответов 15
Метки нет (Все метки)
Добрый день!
подскажите, как можно осуществить доступ к элементам другой формы. грубо говоря, мне надо из 2-й формы обновить содержимое листбокса 1й формы. в первой форме указал в Button с модификатором public
"for_1C.Admin.Base_list" недоступен из-за его уровня защиты. почему он не доступен - не могу понять. и как это исправить? может я совершенно не то делаю? мне главное понять, как управлять элементами другой формы из текущей формы
0
|
03.09.2009, 15:20 | |
Ответы с готовыми решениями:
15
Доступ к элементам другой формы Доступ к элементам одной формы из другой Как получить доступ к элементам управления другой формы Как получить доступ к элементам формы из другого обычного класса (не из второй формы) |
1513 / 780 / 103
Регистрация: 22.04.2008
Сообщений: 1,610
|
|
03.09.2009, 15:29 | 2 |
По умолчанию и по пронцыпам ООП все члены в классе формы являются private, например контролы
можете поставить public, и получите доступ к контролам другой формы, но это не корректно с точки зрения ООП лучше для этой цели использовать public свойства, и через них передавать нужные данные в другую форму.
0
|
2 / 2 / 0
Регистрация: 17.08.2009
Сообщений: 51
|
|
03.09.2009, 15:56 [ТС] | 3 |
Sergei, спасибо за объяснение,не много получилось.
теперь выдаёт ошибку при выполнении на строчку parentForm.Base_list.Items.Add(Global.name[h]); пишет, что в экземпляре объекта не задана ссылка на объект. пытаюсь разобраться... может у кого-нить найдётся совет?
0
|
14 / 14 / 2
Регистрация: 04.09.2009
Сообщений: 46
|
|||||||||||
04.09.2009, 01:41 | 4 | ||||||||||
Желательно, не обращаться напрямую к элементам другой формы, это не безопасно. Лучше это делать через промежуточные функции, проверяя валидность данных. Вот небольшой пример:
Форма №1, к ее элементам мы хотим получить доступ, к примеру к элементу DataGridView:
0
|
2 / 2 / 0
Регистрация: 17.08.2009
Сообщений: 51
|
|
04.09.2009, 01:45 [ТС] | 5 |
Спасибо, утром попробую реализовать.
0
|
2 / 2 / 0
Регистрация: 17.08.2009
Сообщений: 51
|
|
04.09.2009, 10:18 [ТС] | 6 |
to4kin, что-то я не могу вкурить в ваш код... элемент DataGridView не виден ни в первой, ни во второй форме... да и как-то очень много не понятного для меня в нём... можете не много рассказать или объяснить его?
почему не безопасно? и к каким последствиям это может привести?
0
|
14 / 14 / 2
Регистрация: 04.09.2009
Сообщений: 46
|
||||||||||||||||||||||||||
04.09.2009, 11:36 | 7 | |||||||||||||||||||||||||
Что значит не виден ни в первой, ни во второй? Как минимум DataGridView должен быть виден в той форме, в которой его создали.
Для наглядности можно описать ее так:
Далее записываем в DataGridView1 значение из TextBox1
Если вы откроете доступ к элементу другой формы, следовательно вы откроете доступ ко всем свойствам данного элемента. Через "промежуточную функцию" вы разрешаете изменять в элементе только то что предусмотрено данной функцией и ничего более, элемент же не виден из вне. P.S. Выложите код двух ваших форм, посмотрим в чем там проблема. Добавлено через 25 минут Вот полностью рабочий пример с использованием ListBox'a: From1:
0
|
2 / 2 / 0
Регистрация: 17.08.2009
Сообщений: 51
|
|||||||||||
04.09.2009, 12:24 [ТС] | 8 | ||||||||||
код первой формы
0
|
14 / 14 / 2
Регистрация: 04.09.2009
Сообщений: 46
|
||||||||||||||||
04.09.2009, 17:25 | 9 | |||||||||||||||
Не совсем понял что делает эта программа, но не в этом суть. Вы опять строите обращение так же как и раньше, не глядя на примеры. Вот переработанный код Вашей программы, обратите внимание на части кода выделенные восклицательными знаками.
Первая форма:
1
|
2 / 2 / 0
Регистрация: 17.08.2009
Сообщений: 51
|
|||||||||||
07.09.2009, 14:15 [ТС] | 10 | ||||||||||
огромное спасибо!
но не совсем ещё работает у меня в лист бокс добавляются не элементы массива а надпись "Массив Object[]" пытался здесь вставить цикл, но это не дало нужного результата
я просто в спешке перепутал, я хотел так:
0
|
14 / 14 / 2
Регистрация: 04.09.2009
Сообщений: 46
|
||||||
07.09.2009, 15:35 | 11 | |||||
Проверьте правильность написания вызова функции для добавления элементов из второй формы:
0
|
2 / 2 / 0
Регистрация: 17.08.2009
Сообщений: 51
|
||||||
07.09.2009, 16:03 [ТС] | 12 | |||||
именно так и написано у меня
0
|
14 / 14 / 2
Регистрация: 04.09.2009
Сообщений: 46
|
|||||||||||
07.09.2009, 18:24 | 13 | ||||||||||
Просмотрел код еще раз, ошибка в том что Global.name[h] = NULL, т.е. элемент пуст, проверь свой код, где вносишь данные в этот массив, либо сделай так:
1
|
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
|
||||||
08.09.2009, 05:05 | 14 | |||||
То же самое, что и у автора. Для отображения объектов, в листбоксе используется метод ToString к каждому элементу списка. Формат даст тоже самое
0
|
14 / 14 / 2
Регистрация: 04.09.2009
Сообщений: 46
|
|
08.09.2009, 10:44 | 15 |
0
|
2 / 2 / 0
Регистрация: 17.08.2009
Сообщений: 51
|
|
09.09.2009, 09:51 [ТС] | 16 |
Спасибо огромное! Так всё работает
теперь буду отлаживать свои циклы и условия(не совсем корректно работает прога). с этим сам справлюсь =)
0
|
09.09.2009, 09:51 | |
09.09.2009, 09:51 | |
Помогаю со студенческими работами здесь
16
Не удается обращение к элементам и методам формы из другой формы Доступ к элементам формы Доступ к элементам формы Публичный доступ к элементам формы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |