![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| diadiavova |
|
||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
В мэйне доступ к форме можно получить либо так
либо так
Только зачем всё это -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
||||
|
|||||
| Stratus |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 27.5.2009 Репутация: нет Всего: нет |
Вы же меня упрекали по поводу создания второго экземпляра класса......
поставил паблик в дизайнере но серавно не видит Это сообщение отредактировал(а) Stratus - 9.7.2009, 07:06 |
||||
|
|||||
| Stratus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 27.5.2009 Репутация: нет Всего: нет |
ну думаю затем что бы в классе вызвать экземпляр другого класса(формы1) не создавая новый и там работать с его объектами.... или есть более короткий путь??? |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
Класс Programm существует для запуска приложения. И хотя в принципе можно и в него всякого понатыкать, но лучше в нём выполнить код инициализации и забыть про него. Другой вопрос, что код инициализации может ссылаться и на главную форму, тогда конечно, доступ к ней нужен. В моём примере должно вроде всё работать.
Возьмём например случай, когда наше приложение может открывать текстовые файлы и если такой файл открывается с его помощью, то он отобразится в текстбоксе (как в блокноте). В этом случае метод Main может выглядеть так
Надеюсь ничего не напутал Теперь, если контекстном меню текстового файла выбрать "Открыть с помощью" и найти нашу программу, то содержимое файла отобразится в textBox1. А делать что-то другое в этом классе как-то не очень принято. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| Экскалупатор |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
да я упрекал и сам себе не перечу.
эта строка не возвращает вам ссылку на форму которую вы запустили, т.е. это НЕ экземпляр класса, экземпляр класса это form в моем примере:
по этому вы и не можете обратиться обратиться в вашему запущенному классу, нужно запустить форму либо "руками", либо как писал diadiavova:
и в первом и во втором случае у вас остается f(в моем случае form), которая является экземпляром класса и с которой в последствии можно работать, но по сути это тот же запуск "руками", который я вам советовал сразу. вот вам пример почему у вас не работает: Представте себе метателя молота. он бросает молот(это наш метод Application.Run(new Form1());), но после этого он хочет им управлять. вопрос как ему это сделать? правильно, нужно до броска привязать к молоту "веревочку"и потом за нее дергать во время полета. роль этой веревочки и выполняет ээкзеспляр класса(в нашем случае "f"). а без него ничего не получиться и молот будет благополучно лететь пока не упадет... но действительно, для чего это делать? обычно в Main ничего такого не пишут, да и смысла особого нету. если вы работаете с winForm тогда у вас все завязывается на обработчики событий, вот и обрабатывайте их, пишите классы обработчики, и "забудьте" про Main, будет меньше путаницы(ИМХО). Это сообщение отредактировал(а) Экскалупатор - 9.7.2009, 12:15 |
||||||||
|
|||||||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
Кстати, ещё информация к размышлению. В бейсике вообще никакой процедуры Main нет и класса в котором она определена - тоже. При желании всё это можно создать, но обычно это делает компилятор и неплохо с этим справляется. К чему я это... там должен быть просто стандартный код, по крайней мере в большинстве случаев. Пример с чтением аргументов командной строки - это случай когда можно что-то добавить, но даже без этого можно обойтись.
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| BestRoot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 30.10.2008 Репутация: нет Всего: нет |
вот все чудесно вытаскивает |
|||
|
||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
в том что у него нету вот этой строчки:
Form1 newform = new Form1(); |
|||
|
||||
| Stratus |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 27.5.2009 Репутация: нет Всего: нет |
это другой класс
|
||||
|
|||||
| Экскалупатор |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
найди десять отличий.
вариант № 1(не рабочий):
вариант №2(рабочий):
мне кажется, что вы немного путаете: Form1 - это ваш класс(не экземпляр класса, а сам КЛАСС) и вы с ним ничего из Main не сделаете, а form1 - это как раз таки ЭКЗЕМПЛЯР КЛАССА Form1, а вот с ним уже можно работать.(разница в одной букве всего Form1 | form1) я думаю это вас и путает. Это сообщение отредактировал(а) Экскалупатор - 19.7.2009, 18:20 |
||||
|
|||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
В таком виде второй вариант - тоже нерабочий. Переменная form1 объявлена внутри метода и из другого её увидеть нельзя. Stratus, а чем не подошёл вариант с передачей ссылки на форму через параметр функции? Если надо фому найти внутри функции, то это можно сделать при помощи класса Application У него есть статическое свойство OpenForms, которое возвратит коллекцию всех открытых форм приложения. Так же можно воспользоваться статическим методом ActiveForm класса Form. Он возвратит активную в данный момент форму. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| lam0x7C4 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 1.6.2007 Где: Киев Репутация: 1 Всего: 1 |
Привет!
Извините конечно, что так врываюсь, не прочитав всех постов(лень-матушка:%). НО, насколько я понял, то нужно из метода Main изменить(достучаться) текст какого-то текстбокса, что расположен на форме. Так вот, надо делать вот так:
// важная фишка: желательно, чтоб у даного текстбокса был модификатор доступа private или protected. Почему? читайте про Инкапсуляцию. } Ну вотъ. Извините, если что не так понял. На форум захожу редко, поэтому если есть вопросы или возражения, то стучите или в аську 487653031, или в скайп aleksey.aka.lexx, или спамте мыло [email protected] Спасибо за внимание Это сообщение отредактировал(а) lam0x7C4 - 19.7.2009, 20:15 |
|||
|
||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
diadiavova, да, точно, просто три дн выходных(
объявить Form1 на весь класс Program и тогда будет работать. да и вообще я думаю, что автор просто не видит разницы, и по этому помочь ему сложно(имхо). Но вариант с передачей ссылки мне нравиться больше. Это сообщение отредактировал(а) Экскалупатор - 19.7.2009, 20:21 |
|||
|
||||
| Stratus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 27.5.2009 Репутация: нет Всего: нет |
Вариант с передачей ссылки подошел - просто хочется в лоб сделать |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |