forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   С# (http://forum.boolean.name/forumdisplay.php?f=128)
-   -   WinForms (http://forum.boolean.name/showthread.php?t=11576)

h1dd3n 27.12.2009 17:09

WinForms
 
Вообщем делаю примитивную программу которая будет строить примитивные графики функций. Пытаюсь сделать возможность построения нескольких графиков. В C# недавно, так что есть несколько вопросов:
1) Где лучше хранить список графиков? (Всмысле хранить экземпеляры класса графика) Сейчас я просто запихиваю их в объект ArrayList, а его в статическое поле главного окна.
2) Допустим у меня есть первое (главное) окно. И есть второе окно (пока что просто сделал его в дизайнере). Мне надо чтобы при определенном действии (нажатие на кнопку например) это окно открывалось, и пока оно будет открыто, управление главному окну невозможно будет передать, как это сделать? (Вообщем если проще то пример: открываем окно About и пока мы его не закроем перейти на главное окно нельзя, при этом окно About должно быть на переднем плане). Мне это надо чтобы открывать окно "свойств графика" (Кстати, если кто-то пользовался прогой Advanced Grapher то там именно так и сделано).

Dream 27.12.2009 17:11

Ответ: WinForms
 
там есть вроде параметр модальности в свойствах формы. посмотри хорошенько

h1dd3n 27.12.2009 17:28

Ответ: WinForms
 
Не нашел такого в свойствах (которые в дизайнере). Есть свойство Modal, но оно только для чтения.

Dream 27.12.2009 17:33

Ответ: WinForms
 
ну тогда вариант просто при открытии второй формы первой форме ставить доступность(Enable) -false. а когда закрывается вторая форма первой вернуть Enable тру:)

h1dd3n 27.12.2009 18:25

Ответ: WinForms
 
Недовариант, хотя если другого не будет придется пользоваться этим =)
Недостатки:
1) Первая форма принимает серые оттенки.
2) Если скрыть оба окна (minimize) и в открыть главное, дочернее остается скрытым, ну и как следствие - дочернее не всегда находится перед главным.

Dream 27.12.2009 18:59

Ответ: WinForms
 
тогда юзай MIDI формыю. они кажется соответствуют тем задачам которые ты поставил:)

pax 27.12.2009 19:26

Ответ: WinForms
 
Сделай вот так:
form2.ShowDialog(form1);

pax 27.12.2009 19:32

Ответ: WinForms
 
Чтобы хранить типизированные списки используй коллекции типа List<Тип> Имя_переменной = new List<Тип>();

h1dd3n 27.12.2009 22:00

Ответ: WinForms
 
спс PAX
Фишка с ShowDialog идеально то что надо!
Кстати чем List отличается от ArrayList?
И кстати где лучше хранить список то (не важно какой)? в статик поле?

Dream 27.12.2009 23:01

Ответ: WinForms
 
cтатик поля - поля которые создаются при первом обращени к классу. и являются добщими для всех экземпляров класса. идеально подходит для хранения всех экзепляров этого класса, а также общих переменных, которые можно модифицировать и/или получать значения из других классов, не обращаясь к конкретному экземпляру

pax 28.12.2009 00:19

Ответ: WinForms
 
На сколько я помню ArrayList не типизированный список, т.е. содержит объекты как object. Если не хочется приводить типы каждый раз при обращении к массиву, то пользуются типизированными списками, у которых при объявлении задается тип в угловых скобках. Элементы такого списка будут иметь твой тип, соответственно приведения типов не нужно.


Часовой пояс GMT +4, время: 16:17.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot