![]() |
Модераторы: Partizan, gambit Страницы: (14) Все « Первая ... 7 8 [9] 10 11 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
![]() ![]() ![]() |
|
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
Это создаст новую форму form2. Если хочется создать и показать новую форму, нужно после "new" вызвать form2.Show() -------------------- ![]() |
|||
|
||||
Qhermit |
|
||||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 27.3.2008 Репутация: нет Всего: нет |
мне нужно что бы в форму form2 из файла записывались значения в textbox-ы которые потом в других классах я использую а если так я делаю и потом просматриваю form2 то в ней значения которые я изначально выставил а не те которые в файле поэтому вот это ничего не делает или хз
|
||||
|
|||||
PaZ1T1V |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 169 Регистрация: 26.2.2008 Где: Багдад ) Репутация: нет Всего: нет |
Народ, я правильно пишу или нет ??? по4ему то ни4его не пашет (((
и
по4ему при нажатии кнопки зна4ения переменных меняются а в родительскую форму не передаются ?? поправил так, пришлось открыть richTextBox, все передается, то 4то мне надо дажже работает, но работает после того как я закрою форм2, мне етого не надо помогите плиз
Это сообщение отредактировал(а) PaZ1T1V - 9.4.2008, 15:05 --------------------
[size=8]Atention please!!![/size] [size=6]Кривые руки[/size] |
||||||
|
|||||||
ProgrammingLife |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 19.1.2008 Где: ЧИРЧИКАГО (UZ) Репутация: нет Всего: нет |
Всем Салют! Люди не мучайтесь делайте
![]() ![]()
ФОРМЕ 2
![]() КОМУ ПОМОГ ? ПРИШЛИТЕ ПИСЬМА МНЕ ИНТЕРЕСНО Я СО СТАТИКОМ НЕ ПОЛЬЗОВАЛСЯ ОБЪЯСНИТЕ СКИНТЕ КОДИК С СОУЧАСТИЕМ КЛЮЧЕВОГО СЛОВА static |
||||
|
|||||
Solely |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 3.4.2008 Репутация: нет Всего: нет |
mr.DUDA - thanks!!
|
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 3 Всего: 149 |
ProgrammingLife, лучше научится правлиьно решать вопросы, а не просто решать.
Если уж хочешь статик, то лучше использовать Синглтон |
|||
|
||||
botusai |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 24.9.2007 Репутация: нет Всего: нет |
2 Paz1t1v
Попробуй так: напиши на главной форме метод (DoWork), который делает то, что у тебя сейчас делает твоя кнопка findBtn на findForm, а на событии Click этой кнопки вызывай этот новый метод (form1.DoWork()) |
|||
|
||||
ProgrammingLife |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 19.1.2008 Где: ЧИРЧИКАГО (UZ) Репутация: нет Всего: нет |
![]() |
|||
|
||||
botusai |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 24.9.2007 Репутация: нет Всего: нет |
Вот код
Это сообщение отредактировал(а) botusai - 19.4.2008, 07:28 |
|||
|
||||
CheFF |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 4.5.2008 Репутация: нет Всего: нет |
Тоже вопрос про доступ к форме и контролам.
Делаю класс, который должен работать с контролами на форме. По началу, когда он работал с одним контролом, я решил просто передать этот контрол через параметр в конструкторе в класс и уже оттуда с ним работать. Все бы хорошо, да вот только потом пришлось еще один контрол добавить, а за ним еще один и еще... Может есть способ поэлегантнее? Пробовал добавить через конструктор форму... но в классе через форму не удалось выйти на контролы на ней... Как же работать из класса с контролами на форме? |
|||
|
||||
-Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 4 Всего: 59 |
потому что контролы на форме private задай internal или public (в зидайнере форм) свойству Modifiers тех контролов, доступ к которым ты хочешь получить из-вне. А на счет "поэлегантнее" - разных подходов сотни. Все зависит от задачи. Лично мне вообще на приходится прибегать к таким способам, типа "доступ к контролам формы из какого-то класса". Может у тебя и уникальная задача, но уверен, что решить ее можно правильно. -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
CheFF |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 4.5.2008 Репутация: нет Всего: нет |
-Mikle-, хм... это я пробовал, вот только не знаю, как работать то в классе.
Создаю поле для указателя на форму:
Через конструктор его туда пихаю. Теперь, допустим, я могу сменить заголовок через
Насчет "элегантности" - пишу подобие броузера. На главной форме лежит таб контрол, в который я добавляю вместо TabPage вкладок, вкладки моего класса, наследованные от табпейджа, который содержит в себе компонент WebBrowser. Так вот, у этого броузера есть несколько событий, которые описываются в этом классе. Например, что бы он урл писал в заголовке, отображал процесс загрузки страницы в статус баре etc. Другого способа, как передавать через конструктор ему все эти контролы, а внутри уже менять их, я не нашел. |
||||||
|
|||||||
-Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 4 Всего: 59 |
А зачем ты: 1. вообще создаешь экземпляр вместо того, чтоб передавать this? 2. создаешь экземпляр базового класса для форм(в котором конечно же нет твоих контролов), вместо того чтоб создавать экземпляр твоей главной формы? На заметку: метод FindForm() контрола (в том числе табпейджа) возвращает ссылку на форму, в которой находится контрол. Элегантность: Один из принципов, которого надо придерживаться создавая архитектуру своего приложения, это разделение задач по иерархии. То есть каждый класс занимается своими задачами со своими данными(свойствами). Каждый класс имеет право (но не обязан) знать все о тех классах, которые он использует, но не должен ничего знать о классах которые используют его. Если класс Х хочет взаимодействовать с классами, которые его используют, то класс Х должен взаимодействовать на максимально абстракном уровне, без необходимости знать что-либо о классах, которые используют его. К счастью, для решения таких задач, в .NET есть механизм событий и делегаты. Итак, следуя этому принципу думаем: у нас есть форма, у формы есть ПрогресБар, ТабКонтрол и т.д., у ТабКонтрол есть ТабПейдж (ну или порожденный от него), а у ТабПейджа есть ВебБроузер. Таким образом форма стоит здесь в верху иерархии и это значит, что она имеет право знать обо всех классах, которые она использует, в том числе о твоем ТабПейдж и ВэбБроузер не нем. Мы не можем себе позволить того, чтобы что-либо самостоятельно меняло свойство класса, стоящего выше по иерархии, иначе был бы бардак: кнопка вдруг захотела поменять цвет фона у формы на красный, а ПрогрессБар - на синий, а сама форма при этом осталась бы в "шоке" от такого безобразия... Исходя из этих убеждений, приходим к некоторым решениям: 1) Первый, самый простой вариант - это предоставить ссылку на WebBrowser в твоем порожденном пэйдже. 2) Второй - объявить нужные тебе события и свойства в твоем порожденном пейдже. Форма должна сама подписываться на события броузера или пэйджа и отписываться от них когда выбирают другой пейдж. Также она сама должна устанавливать текст своего заголовка и менять значения СтатусБара и ПрогресБара, считывая значения свойств выбранного пейджа. Иначе будет неизбежна ситуация, когда два твоих открытых ТабПейджа начнут на перебив менять значения свойств того же, например, ПрогресБара, что не есть гуд во всех смыслах. Все, устал... ![]() ![]() -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
CheFF |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 4.5.2008 Репутация: нет Всего: нет |
-Mikle-, хех... ты первый, "кому не пофиг", который реально что-то объяснил... остальные все шлют в ртфм =)
Как у меня устроена программа - сложно объяснить на пальцах, я вот лучше кину ее код. Он ужасен, просто отвратителен, но все-таки я бы хотел сначала разобраться с тем, что есть, а потом уже переписывать по нормальному. Про правильную архитектуру: Саму концепцию правильного подхода я понял, вот только как ее реализовать не совсем понял, я такой человек, который без примеров очень сложно понимает. Можете подкинуть ссылочек по теме или подсказать, по каким темам искать? А то я в терминологии профан, потому и с поиском затруднения вечные =/ Присоединённый файл ( Кол-во скачиваний: 4 ) ![]() |
|||
|
||||
-Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 4 Всего: 59 |
Ну вот так, например, будет правильнее. Замечу что не идеально, но для понимания достаточно. Я подправил код и привел его в порядок.
Присоединённый файл ( Кол-во скачиваний: 16 ) ![]() -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | .NET для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |