Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как в с# сделать многодокументный (MDI) проект.
|
|||
|---|---|---|---|
|
#18+
САБЖ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2003, 17:35 |
|
||
|
Как в с# сделать многодокументный (MDI) проект.
|
|||
|---|---|---|---|
|
#18+
Спасибо нашел а как мне внутри моего MDI окна открыть форму, которая находится в dll? я открываю, а у меня получается еще одно приложение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2003, 17:45 |
|
||
|
Как в с# сделать многодокументный (MDI) проект.
|
|||
|---|---|---|---|
|
#18+
Опять таки огромное спасибо за беспокойство, оказалось все просто А то я тут парюсь уже 10 минут Вопросы сняты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2003, 17:48 |
|
||
|
Как в с# сделать многодокументный (MDI) проект.
|
|||
|---|---|---|---|
|
#18+
Молодец, что нашел, плохо, что другим не объяснил :) Тем, кому может понадобиться: (1) private void mnuFileNew_Click(object sender, System.EventArgs e) { System.Windows.Forms.Form fCld = new frmChild(); fCld.MdiParent = this; fCld.Show (); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2003, 13:38 |
|
||
|
Как в с# сделать многодокументный (MDI) проект.
|
|||
|---|---|---|---|
|
#18+
вот попробовал поиграться с this.IsMdiContainer: грузим основную форму (this.IsMdiContainer = True) грузим дочернюю. потом по кнопке в основной делаем this.IsMdiContainer = False дочерняя пропадает. при этом больше никакие ее события не срабатывают. Ошибок тоже не выскакивает никаких. основная при этом фунциклирует нормально. интересно-бы узнать дальнейшую судьбу дочерней формы? я понимаю, что ситуация надумана, но такие ситуации сильно помогают в понимании внутренних процессов при изучении нового. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 18:15 |
|
||
|
Как в с# сделать многодокументный (MDI) проект.
|
|||
|---|---|---|---|
|
#18+
При this.IsMdiContainer = False коллекция MdiChildren главной формы "уничтожается", следовательно и все child-формы. Так что child форм просто нет. P.S. Не советую так шутить в своих приложениях :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 19:53 |
|
||
|
Как в с# сделать многодокументный (MDI) проект.
|
|||
|---|---|---|---|
|
#18+
А не подскажите как компонент, который находится в родительской форме, использовать в дочерней. Я думю, что можно использовать один объект sqlconnection на все приложение... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 20:14 |
|
||
|
Как в с# сделать многодокументный (MDI) проект.
|
|||
|---|---|---|---|
|
#18+
>А не подскажите как компонент, который находится в родительской форме, использовать в дочерней. Я думю, что можно использовать один объект sqlconnection на все приложение... В приложениях MDI из Mdichild добраться до "главного окна" можна через ParentForm. Только для ADO.NET совсем не критично несколько Connection. Создавайте его там где надо. Открывайте соединение с базой данных как можно позже закрывайте как можно раньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 20:36 |
|
||
|
Как в с# сделать многодокументный (MDI) проект.
|
|||
|---|---|---|---|
|
#18+
>Только для ADO.NET совсем не критично несколько Connection. Неправильно выразился. Для ADO.NET нет необходимости, и нет аналога Delphiского DataModule. Создавать экземпляр класс Connection можно в любом месте, где угодно и столько раз сколько нужно при этом производительность достаточно высока. Думаю вам следует поближе познакомиться с технологией ADO.NET и вы поймете почему это все и как. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 20:43 |
|
||
|
Как в с# сделать многодокументный (MDI) проект.
|
|||
|---|---|---|---|
|
#18+
Ну а с точки зрения удобства... если форм много, а соединение изменилось... чтобы не менять на всех формах... И еще - правильно ли я понял - sqlconnection`ов, dataadapter`ов должно быть много... а dataset`ов - один на каждую форму??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 21:59 |
|
||
|
Как в с# сделать многодокументный (MDI) проект.
|
|||
|---|---|---|---|
|
#18+
>Ну а с точки зрения удобства... если форм много, а соединение изменилось... Ну меняется строка соединения, больше ничего. >И еще - правильно ли я понял - sqlconnection`ов, dataadapter`ов должно быть много... а dataset`ов - один на каждую форму??? Всего по возможности должно быть мало :-). А dataSet вообще может быть один. На самом деле очень распространненая практика, когда все функции работы с данными выносятся в отдельный модуль. Конечно мастера в Visual Studio .NET такое делать не могут. Вот и получается в основном что на каждой форме есть и несколько DataAdapter и Connection, а также DataSet. Не знаю как остальные, но я лично никогда не оставляю соединение открытым (Open). Когда приходит необходимость обработки данных - просто создаю экземпляр класса Connection - открываю со своей строкой подключенияя- произвожу необходимые действия, и сразу же его закрываю. При этом руководствуюсь лозунгом: "Позже открыл - раньше закрыл". Поэтому и надобности в единном Connection нет, единственное(но необязательно) строка подключение - должна быть одна и быть общедоступной. Я думаю все таки вам следует почитать что нибудь про "философию" ADO.NET и многие вещи тогда станут понятны. Что главное- так это ADO и ADO.NET совершенно разные вещи, и техника работы с ADO не подходит (да и в основном не реализована) в ADO.NET. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 07:38 |
|
||
|
Как в с# сделать многодокументный (MDI) проект.
|
|||
|---|---|---|---|
|
#18+
При this.IsMdiContainer = False коллекция MdiChildren главной формы "уничтожается", следовательно и все child-формы. Так что child форм просто нет. стоп-стоп. есть объект. у него есть время жизни. жизнь объекта делится на две части: нормальная - пока к объекту можно добраться по ссылкам, и "загробная" - пока сборщик мусора не уберет этот объект после того, как объект стал недостижимым по ссылкам. Подтверждает ли мой "эксперимент" утверждение, что в "загробной жизни" события объекта не отрабатывают? если да, то получается, что смысла в событиях почти нет - я всегда должен их инициировать явно? В вышеуказанном случае - писать свою обработку изменения значения this.IsMdiContainer в которой пробегаться по всем чилдам и закрывать их. Но мне всегда казалось, что события для того и нужны, чтобы обрабатывать вот такие случаи и освободить меня от этой рутинной работы. или я чего-то не понимаю? P.S. Не советую так шутить в своих приложениях :-) для того и "балуюсь", чтобы потом нечаянно не пошутить :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 11:04 |
|
||
|
Как в с# сделать многодокументный (MDI) проект.
|
|||
|---|---|---|---|
|
#18+
>если да, то получается, что смысла в событиях почти нет - я всегда должен их инициировать явно? В вышеуказанном случае - писать свою обработку изменения значения this.IsMdiContainer в которой пробегаться по всем чилдам и закрывать их. Но мне всегда казалось, что события для того и нужны, чтобы обрабатывать вот такие случаи и освободить меня от этой рутинной работы. Что то я не понимаю в чем проблема. Мне кажется большинство ситуаций надо предотвращать а не отлавливать. Здесь вывод напрашивается один это свойство не используется для корректного закрытия child-окон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 11:26 |
|
||
|
Как в с# сделать многодокументный (MDI) проект.
|
|||
|---|---|---|---|
|
#18+
Здесь вывод напрашивается один это свойство не используется для корректного закрытия child-окон. Плохо. Тоесть мне теперь надо найти ВСЕ варианты, которые могут привести к некорректному закрытию формы? мне всегда казалось, что форма сама о себе должна заботиться - достаточно в ОДНОМ месте написать правильный код ее закрытия, и все - среда выполнения должна обеспечить обработку события за исключением ситуаций, когда сама среда не "вылетела" по какому-то ексепшину... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 14:52 |
|
||
|
Как в с# сделать многодокументный (MDI) проект.
|
|||
|---|---|---|---|
|
#18+
Ну что то еще найдете пишите, интересно. Бред конечно но вполне возможно в следующей версии FrameWork будет срабатывать Closing у child-from в этой ситуации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 15:01 |
|
||
|
Как в с# сделать многодокументный (MDI) проект.
|
|||
|---|---|---|---|
|
#18+
дело в том, что я только начинаю изучать технололию NET и мне хотелось просто узнать - описанная мной ситуация - это норма и это я чего-то не понимаю, или я понимаю все правильнро, а эта ситуация - исключение. Вот в чем вопрос :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2004, 15:56 |
|
||
|
Как в с# сделать многодокументный (MDI) проект.
|
|||
|---|---|---|---|
|
#18+
>Когда приходит необходимость обработки данных - просто создаю экземпляр класса Connection - открываю со своей строкой подключенияя- произвожу необходимые действия, и сразу же его закрываю. А можно ли сделать так: создать экземпляр класса Connection в главной форме, а открывать и закрывать его уже по мере надобности в остальных. Я не могу понять как прописывать этот экземпляр в компонентах на других формах. Например, я объявляю этот Connection в классе главной формы Form1. Указываю в обработчике события этой формы Load строку соединения с БД. Открываю другую форму на которой находится DataAdapter. Ему в качестве параметра надо указать экземпляр класса Connection. Но в визуальном редакторе его свойств видно только Connection`ы, котрые находятся на форме DataAdaptera. У меня книга по программированию БД на VB.Net. Там автор пишет, что мол объявляем один коннекшн, создаем его и пользуем во все программе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 01:22 |
|
||
|
Как в с# сделать многодокументный (MDI) проект.
|
|||
|---|---|---|---|
|
#18+
>А можно ли сделать так: создать экземпляр класса Connection в главной форме, а открывать и закрывать его уже по мере надобности в остальных. Я не могу понять как прописывать этот экземпляр в компонентах на других формах. Например, я объявляю этот Connection в классе главной формы Form1. Указываю в обработчике события этой формы Load строку соединения с БД. Открываю другую форму на которой находится DataAdapter. Ему в качестве параметра надо указать экземпляр класса Connection. Но в визуальном редакторе его свойств видно только Connection`ы, котрые находятся на форме DataAdaptera. У меня книга по программированию БД на VB.Net. Там автор пишет, что мол объявляем один коннекшн, создаем его и пользуем во все программе. Измените "видимость" у своего Connection с private, например на internal (видимость на сборку). Объект Connection будет доступен из кода. Теперь design. Очень много пошло вопросов по этой теме. Опишу один из способов как делается один Connection на все приложение. При этом все что касается доступа к БД тоже будет находиться в одном месте. 1) Создаете Component назовем его например DataManager. 2) На этот component "накидываем" DataAdapterы, Connection. При этом полностью используются различные мастера по генерации процедуры, SQL запросов и т.д. 3) В главной формы создаем объект нашего DataManager, устанавливаем его видимость, например в internal. 4) Нигде больше не создаем экземпляров класса DataAdapter а используем из нашего компонента DataManager. 5) В нашем компоненте можем создать различные процедуры. Из названия станет понятно их назначение. FillMyDataSet(DataSet ds); UpdateMyDataSet(DataSet ds); 6) Получаем аналог DataModule в Delphi. К которому мы можем обратиться в любой момент через главную форму и передать например свой DataSet для Fill, Update and etc. Пример: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 07:43 |
|
||
|
Как в с# сделать многодокументный (MDI) проект.
|
|||
|---|---|---|---|
|
#18+
народ ! так я и не понял как правильно закрыть форму. есть парент и в ней открываются два чилд.а. должно быть так: открываю один чилд, потом открываю второй при этом первый закрывается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2004, 20:56 |
|
||
|
|

start [/forum/topic.php?fid=20&msg=32088428&tid=1438109]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
87ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 467ms |

| 0 / 0 |
