|
Какие-то не понятки с формами в .Net
|
|||
---|---|---|---|
#18+
Исполняющая среда отключена, программа стартует с main(). Код: vbnet 1. 2. 3. 4. 5. 6.
Из Form1 вызываем Form2 предварительно заполнив текстом изначально пустой TextBox1 на Form1 Код: vbnet 1. 2. 3. 4. 5. 6. 7.
А из запущенной Form2 пытаемся прочесть этот TextBox1 на Form1 Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
И выводит гад пустую строку, т.е. по слову Form1 нельзя обратиться к другой форме. Спасает вот так: Код: vbnet 1. 2. 3.
Разжуйте, туплю, я просто привык обращаться к другим формам по имени. Ну, в принципе я понимаю что класс Form1 это еще не экземпляр Form1. Кстати, если не вырубать Framework, то прокатывает как я привык в VB6. Но мне нужна Main. "Массивы" форм я не использую, а вот обращаюсь из одной к другой часто. Чтож мне теперь всякий раз CType(Owner, Form1) лепить везде? А если я не модально Form2 запускаю? Причем хотелось бы обращаться к Form1 именно по "имени класса" Form1 , а по FormХЗ as New Form1. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2014, 01:21 |
|
Какие-то не понятки с формами в .Net
|
|||
---|---|---|---|
#18+
Если только вот так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
Тогда "привычный интерфейс" прокатывает. Разумный вариант? ==== По хорошему конечно и с остальными формами надо делать Form_n->New cForm_n Потому что вторая конструкция кот. я постоянно пользуюсь это что-то типа Form2.Text="My caption" Form2.label1="Some custom label text" Form2.ShowDialog(Me) Но в принципе и без cForm2 должно прокатить при условии что Form2 всегда вызывается модально в одном экземпляре. Плюс я всегда делаю ей Me.Dispose() при закрытии. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2014, 01:45 |
|
Какие-то не понятки с формами в .Net
|
|||
---|---|---|---|
#18+
Дмитрий77Чтож мне теперь всякий раз CType(Owner, Form1) лепить везде? А если я не модально Form2 запускаю? 1. Создайте у своей Form2 перегрузку конструктора с передачей туда экземпляра Form1, сохраните экземпляр в поле/свойстве класса, и обращайтесь к нему. 2. Если все дочерние формы вызываются из Form1 - в базовом классе дочерних форм создайте свойство, кастующее овнера к Form1. Дмитрий77Причем хотелось бы обращаться к Form1 именно по "имени класса" Form1 , а по FormХЗ as New Form1. Всё-таки правду говорят, что VB прививает плохой стиль программирования. Возможно, даже худший, чем дельфи. Обращение к классу по его имени в ООП подразумевает обращение к статическим методам класса. Вносить сюда путаницу, вводя вызовы к экземпляру, имеющему одинаковое (вплоть до регистра) имя с классом - очень плохо. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2014, 06:08 |
|
Какие-то не понятки с формами в .Net
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныОбращение к классу по его имени в ООП подразумевает... Вносить сюда путаницу, вводя вызовы к экземпляру, имеющему одинаковое (вплоть до регистра) имя с классом - очень плохо. Путаница мне не нужна. Причем если не отработать "простой пример" и продолжить на авось, то потом вообще что-то понимать перестану (получив очередные неожиданные результаты но имея уже кучу кода), это я как раз хорошо понимаю. Короче переписал свой пример так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
По крайней мере здесь вряд ли можно придраться, т.к. обращаюсь точно к явным экземплярам. Или фигня? Сон Веры Павловны1. Создайте у своей Form2 перегрузку конструктора с передачей туда экземпляра Form1, сохраните экземпляр в поле/свойстве класса, и обращайтесь к нему. 2. Если все дочерние формы вызываются из Form1 - в базовом классе дочерних форм создайте свойство, кастующее овнера к Form1. Если б ты мне это кодами пояснил. Умных слов много. Слишком много умностей тоже честно не люблю, у меня на них башка плохо варит. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2014, 06:49 |
|
Какие-то не понятки с формами в .Net
|
|||
---|---|---|---|
#18+
Дмитрий77Если б ты мне это кодами пояснил. Умных слов много. Слишком много умностей тоже честно не люблю, у меня на них башка плохо варит. На VB никогда не писал, поэтому код сишарповый: вариант 1: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
Свойство TextBoxText нужно потому, что у textBox1 модификатор видимости по умолчанию - private. Можно в дизайнере его изменить на public/internal, тогда свойство будет не нужно, и в Form2 можно будет напрямую обращаться к textBox1 через экземпляр _parent (хотя второе не рекомендуется). Вариант 2: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2014, 07:40 |
|
Какие-то не понятки с формами в .Net
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, почитайте про класс BindingSource, и работайте с моделями. Кто что биндит указывайте в конструкторе формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2014, 09:39 |
|
Какие-то не понятки с формами в .Net
|
|||
---|---|---|---|
#18+
mmnick, почитайте вопрос темы. Если непонятно - он про передачу ссылки на экземпляр вызывающей формы, а вовсе не про биндинги. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2014, 10:12 |
|
Какие-то не понятки с формами в .Net
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, mmnick, как мне показалось, говорит о том - что это не самая хорошая идея из одной формы ковыряться в потрохах другой: Дмитрий77А из запущенной Form2 пытаемся прочесть этот TextBox1 на Form1 отсюда и предложение использовать общую модель, а отображение - через Binding ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2014, 10:23 |
|
Какие-то не понятки с формами в .Net
|
|||
---|---|---|---|
#18+
Изопропил, совершенно верно ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2014, 10:25 |
|
Какие-то не понятки с формами в .Net
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, как-то все-таки заумно. Код: c# 1.
это для каждого контрола навороты прописывать Есть например ListView на Form1, его содержание правится из Form2 Естественно нужен прозрачный доступ из Form1 к Form2 (чтоб вытащить информацию из Form1 при заполнении Form2) И прозрачный доступ из Form2 к Form1, чтоб сохранить измененную информацию в Form1. У меня этих Listview на Form1 10 штук например и отдельная Form2/Form3 (отдельный класc по терминологии ) под каждый ListView. Ну это я просто упрощенно пытаюсь объяснить. Плюс еще например какое-то поведение при заполнении Form2 (т.е. когда она уже загружена) может зависеть от каких-то чекбоксов/полей на Form1, т.е. надо прозрачно обращаться к любым элементам Form1 из Form2 (и read и write). Мой крайний вариант нормальный? 16780516 К нему претензии есть? Потому что он мне дает прозрачную модель взаимодействия к которой я привык. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2014, 15:45 |
|
|
start [/forum/topic.php?fid=20&tid=1402290]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 140ms |
0 / 0 |