![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| graham |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 17.4.2009 Репутация: нет Всего: нет |
1. код на C++\CLI
2. структура программы: а) две формы, предположим Form1 и Form2, каждая имеет свой заголовочник и собрана в дизайнере; б) заголовочники подключил к исполняемому .cpp 3. суть программы: Form1 - главная форма, отображает какие-то данные и содержит кнопку - обработчик в зависимости от выбранных настроек на Form2 должен сделать вычисления. Form2 вызывается из меню Form1 через ShowDialog(). На Form2 находятся последние настройки программы. Настройки установленные в Form2 надо сохранять в .ini и считывають оттуда, чтобы их не вводить заново при каждом запуске программы. Не могу реализовать что-то вроде общего контейнера для Form1 и Form2, в который бы кидал все данные из полей Form2, а в Form1 мог их считать и использовать в процедурах для сохранения\чтения настроек и в зависимости от настроек обработка данных по нажатию кнопки. Пробовал реализовать через глобальный static ref class, в итоге получилось добраться до него из Form1, но он почему-то оказался недоступен из Form2. Пробовал сделать поля public, тоже не получилось, но таким способом реализовать не хочу, поэтому не стал разбираться в нем. Со static ref class разбирался, но самостоятельно так и не получилось :( Может есть какое-то стандартное решение для этой задачи? |
|||
|
||||
| Heinzz |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 12.12.2008 Где: .net Репутация: 1 Всего: 9 |
Можно так
а это форма 2
Поле result -- любое по вкусу, можно записать свою структуру с настройками (удобнее будет сериализовать в файл) |
||||
|
|||||
| graham |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 17.4.2009 Репутация: нет Всего: нет |
Спасибо, но это всетаки не то.
Настроек планируется сделать много. Получается у меня сейчас есть класс Form1, Form2 и класс Globals. Где и как создать экземпляр Globals чтобы к нему можно было обращаться из Form1 и Form2, а в будущем и из других форм? Аналогичный метод понадобится для локализации меню, если конечно нет другого... |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 5 Всего: 118 |
делайте структуру или класс и передавайте ссылку на него в форму2, где и работайте с ней. А для компонентов используйте binding свойств на экземпляр этой структуры\класса
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: нет Всего: 72 |
|
|||
|
||||
| graham |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 17.4.2009 Репутация: нет Всего: нет |
jonie, а есть способ без передачи форме класса\структуры опций? Хочу сделать чтобы была область памяти в оперативке типа глобальных переменных для всего проекта. Думал сделать через файл, но постоянно читать-писать на винт не разумно.
Добавлено @ 17:17 math64, тут самое сложное(на что не могу найти ответа), где этот класс объявить и как сделать чтобы он был виден и в Form1 и в Form2? Это сообщение отредактировал(а) graham - 11.8.2009, 17:19 |
|||
|
||||
| Heinzz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 12.12.2008 Где: .net Репутация: 1 Всего: 9 |
Как предложил math64 сделайте Ваш класс членом формы 1 и передавайте в конструктор формы 2, таким образом доступ будут иметь все. Ну а глобальные переменные нехорошо, бросьте. |
|||
|
||||
| graham |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 17.4.2009 Репутация: нет Всего: нет |
Хорошо, если так, то сделаю через передачу в формы. Но можно какой-нибудь материал в подтверждение, что это нехорошо? |
|||
|
||||
| math64 |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: нет Всего: 72 |
Например, появляется Form3, которой тоже нужны аналогичные настройки, но их значения не будут совпадать с настройками Form1 и будут сохраняться в другом .ini или в другой секции. В таком случае не нужно будет создавать Form4, почти идентичную Form2, а использовать Form2 непосредственно. Класс Settings лучше разместить в отдельном файле,
но можно внутри Form2.
|
||||||
|
|||||||
| IGV |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 1.4.2008 Репутация: нет Всего: 2 |
||||
|
||||
| graham |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 17.4.2009 Репутация: нет Всего: нет |
Спасибо, похоже, все что мне нужно это паттерн Singletone. Пока не могу в нем разобраться т.к. "плаваю" в ООП. Но уже есть стимул и направление.
|
|||
|
||||
| graham |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 17.4.2009 Репутация: нет Всего: нет |
объявил класс Settings в первой форме и передал ее при вызове второй форме в конструктор и все заработало, спасибо.
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |