Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Сохранение настроек программы Добавлено: 22.12.09 00:07  

Автор вопроса:  Not андерстен

Ребят помогите. Хочу чтобы после того как я закрыл форму - сохранялись например ее размеры. Чтобы при следующей загрузки формы - ее размеры были те, что были в предыдущей ее состояния работы. Ну думаю понятно.
Делаю так:

Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing

SaveSetting("Form1", "Size", "Top", CStr(Me.Top))
        SaveSetting("Form1", "Size", "Left", CStr(Me.Left))
        SaveSetting("Form1", "Size", "Height", CStr(Me.Height))
        SaveSetting("Form1", "Size", "Width", CStr(Me.Width))

End Sub

Ответить

  Ответы Всего ответов: 27  

Номер ответа: 1
Автор ответа:
 UnDeAdZak



Вопросов: 80
Ответов: 476
 Профиль | | #1 Добавлено: 22.12.09 15:26
сохраняй настройки в файл...
или в реестр.

Ответить

Номер ответа: 2
Автор ответа:
 maza_____



ICQ: 9968842 

Вопросов: 40
Ответов: 337
 Web-сайт: vkontakte.ru/id25563295 добавляйтесь в друзья))
 Профиль | | #2
Добавлено: 22.12.09 15:36
  1.  
  2. Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
  3. Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long


Это INI, можешь в XML писать как в VB6 работать с XML я незнаю)

Ответить

Номер ответа: 3
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #3
Добавлено: 02.01.10 17:57
Учти, что если форма в момент загрузки будет свернута, а ты попытаешься присвоить ей размеры, будет ошибка. (ну, по крайней мере в vb6 так)

Ответить

Номер ответа: 4
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #4 Добавлено: 02.01.10 20:59
Из приведенного им кода видно, что это какбы совсем не вб6 :)

Ответить

Номер ответа: 5
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #5
Добавлено: 03.01.10 01:45
Ну а в чем проблема,Not андерстен? Ты ж и так в реестр сохраняешь... В ветку HKEY_CURRENT_USER\Software\VB and VBA Program Settings\Form1\Size ну и далее 4 ключа...
В чем, собственно, вопрос?

Ответить

Номер ответа: 6
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #6
Добавлено: 03.01.10 01:58
Ну вот, собственно, вариант.
  1. Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
  2.         SaveSetting("Form1", "Size", "Loc_X", Me.Location.X)
  3.         SaveSetting("Form1", "Size", "Loc_Y", Me.Location.Y)
  4.         SaveSetting("Form1", "Size", "S_Width", Me.Width)
  5.         SaveSetting("Form1", "Size", "S_Height", Me.Height)
  6.     End Sub
  7.  
  8.     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  9.         Dim S As Size
  10.         Dim P As Point
  11.         S.Width = CInt(GetSetting("Form1", "Size", "S_Width", Me.Width))
  12.         S.Height = CInt(GetSetting("Form1", "Size", "S_Height", Me.Height))
  13.         P.X = CInt(GetSetting("Form1", "Size", "Loc_X", Me.Location.X))
  14.         P.Y = CInt(GetSetting("Form1", "Size", "Loc_Y", Me.Location.Y))
  15.         Me.Location = P
  16.         Me.Size = S
  17.     End Sub

Учти, что если форма в момент загрузки будет свернута, а ты попытаешься присвоить ей размеры, будет ошибка. (ну, по крайней мере в vb6 так)

Все будет пучком :) Если даже форма свернута, свойства Size и Location никто не отменял.

Ответить

Номер ответа: 7
Автор ответа:
 not Understand



Вопросов: 2
Ответов: 9
 Профиль | | #7 Добавлено: 06.01.10 17:47

А я так сделал

Private Sub Form1_FormClosing(By
SaveSetting("Form1", "Size", "Left", Me.Left)
        SaveSetting("Form1", "Size", "top", Me.Top)
        SaveSetting("Form1", "Size", "height", Me.Height)
        SaveSetting("Form1", "Size", "width", Me.Width)
        SaveSetting("form1", "size", "windowstate", Me.WindowState)

Private Sub Form1_Load(By
Me.Left = GetSetting("Form1", "size", "Left", Me.Left)
        Me.Top = GetSetting("Form1", "size", "top", Me.Top)
        Me.Height = GetSetting("Form1", "size", "height", Me.Height)
        Me.Width = GetSetting("Form1", "size", "width", Me.Width)
        Me.WindowState = GetSetting("Form1", "size", "windowstate", Me.WindowState)

Ответить

Номер ответа: 8
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #8
Добавлено: 06.01.10 20:11
А я так сделал...
и?

Ответить

Номер ответа: 9
Автор ответа:
 not Understand



Вопросов: 2
Ответов: 9
 Профиль | | #9 Добавлено: 10.01.10 23:23
игнорщики :(

Ответить

Номер ответа: 10
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #10
Добавлено: 11.01.10 10:00
not Understand пишет:
игнорщики :(

работает?

Ответить

Номер ответа: 11
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #11 Добавлено: 11.01.10 10:21
никого не слушай... они все чушь несут (с)
в NET для сохранения настроек существует специальный класс My.Settings. Там надо сделать несколько кликов мышью и все настройки будут сохраняться автоматически БЕЗ единой строчки кода. Только разберись как с этой фишкой работать.. там все достаточно просто и примитивно.. (все инструкции в МСДН)

Ответить

Номер ответа: 12
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #12
Добавлено: 11.01.10 11:14
EROS пишет:
никого не слушай... они все чушь несут (с)

т.е. ты хочешь сказать, что выше приведенные варианты нерабочие и не имеют права на жизнь?
Конечно, можно и так, но
EROS пишет:
БЕЗ единой строчки кода

пиздеж. Аналогичный код сама студия в дизайнере пропишет. Только и всего.
И потом - а что, не надо хоть немного с механизмом сохранения настроек познакомится? Коль уж на то пошло, можно и не в реестр, а в XML настройки сохранять.

Ответить

Номер ответа: 13
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #13
Добавлено: 11.01.10 11:33
а еще можно пользоваться мастером создания подключения к БД, который есть в студии. Но проще и нагляднее самому ручками. Так что и тут простор. Опять же, есть еще вариант: заказать программу и совсем ничего не изучать. Правда, EROS?

Ответить

Номер ответа: 14
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #14 Добавлено: 11.01.10 13:26
ты хочешь сказать, что выше приведенные варианты нерабочие и не имеют права на жизнь?

Рабочие, но права на жизнь НЕ имеют.. как и прочая хрень из VB6 от которой надо избавляться.

Аналогичный код сама студия в дизайнере пропишет.

Разумеется напишет.. ведь все знают что чудес на свете не бывает. Но если уж ты решил кого то научить уму-разуму, то будь добр учить тому языку и технологиям,в которых это все будет использоваться! Чего ради в теме про настройки приложения NET приплетать способы из VB6,VBA которые уже давно не актуальны? С таким же успехом можно было бы дать ему еще кучу способов на Дельфи, С++ !

а что, не надо хоть немного с механизмом сохранения настроек познакомится?

Надо, но надо знакомиться с нормальным механизмом, а не с этими рудиментами что вы предлагаете.. засирание реестра, ini - это все давно умерло.. Прекратите насиловать труп vb6! (с) Sharp Не надо тащить в NET весь мусор из vb6 и vba! В NET предусмотрены собственные механизмы и надо использовать именно их, а не изобретать тут велосипеды..

Коль уж на то пошло, можно и не в реестр, а в XML настройки сохранять.

Именно в XML и сохраняются настройки через My.Settings.. это и надо изучать в контексте вопроса.

Но проще и нагляднее самому ручками.

Нагляднее? Да.. Проще? Нет. К тому же, я не думаю, что ТС желает сделать сохранение настроек "нагляднее". Он хочет быстрее и чтобы все работало.. А быстрее чем My.Settings ты ничего не сможешь предложить. Кроме того, если ты хочешь чтоб было нагляднее, то тебе стоит переходить на asm .. там все наглядно.. Но не лучше ли использовать всю мощь VS & NET, что тебе предоставили разработчики по прямому назначению, а не для "забивания гвоздей"!? Ведь все ваши способы это ничто иное как "забивание гвоздей микроскопом".. Вы как обезьяны с гранатой, вам дали мощнейший инструмент а вы не знаете с какой стороны к нему подойти.. ini, реестр.. тьфу, блевотина..

Есть задача.. и есть методы ее решения.. почему никто не предложил организовать запись настроек в текстовый файл на DVD? Это ведь тоже метод решения задачи! Да потому что это дибилизм в контексте этой, конкретной, задачи.. Так и ваши способы - полнейший дибилизм в контексте этой, конкретной, задачи..

Ответить

Номер ответа: 15
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #15
Добавлено: 11.01.10 13:59
Каждая настройка из my.settings занимает одну строку кода (чтение и запись) равно как и способ записи в реестр.
EROS пишет:
Надо, но надо знакомиться с нормальным механизмом, а не с этими рудиментами что вы предлагаете.. засирание реестра, ini - это все давно умерло

Об .ini никто и полслова не сказал.
Проще? Нет
EROS пишет:
Нагляднее? Да.. Проще? Нет.

В чем же усложнение?
EROS пишет:
Но не лучше ли использовать всю мощь VS & NET,

Тогда давай говорить: всю мощь VS.net а не vb.net
Ну а насчет
EROS пишет:
Прекратите насиловать труп vb6! (с) Sharp

там можно My.Settings?! Как интересно! Понятие My, как таковое в дотнете появилось, если мне память не изменяет.
Я дал 100% рабочий код, с минимумом усилий по его созданию и расширению. Хочеешь через settings - флаг в руки. Я предпочитаю либо в реестр либо руками в .xml
Если уж на то пошло, на любой вопрос можно ответить кратко и универсально: http://msdn.microsoft.com/ru-ru/library/default.aspx Правда?
А касательно сабжа: предоставлен живой вариант. А дальше курим тот же МСДН... и радуемся. ИМХО, так из чела хороший спец по VS. И все. Можно и орфографию (ее проверку) доверить MS WORD, а можно и голову включить.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам