2013-12-23 4 views
2

Я сделал форму на Vb.net, в которой пользователь может сделать несколько изменений. Я хочу, чтобы изменения, которые пользователь делает, должны оставаться при каждом выполнении.Как загрузить форму на основе предыдущего выполнения?

Для примера, я применил некоторые эффекты на шрифте, а исполнение -

Private Sub Checkbox1_CheckedChanged() 
    If CheckBox1.Checked = True then 
     Label1.Font = New Drawing Style ("Comic Sans Ms", 16, FontStyle.Bold) 
    End If 
End Sub 

изменения, которые пользователь делает должны быть видны в следующий раз программа будет выполнена.

Возможно ли это?

Спасибо заранее!

+0

хранить изменения и извлекать и применять их при загрузке формы? – bansi

+2

Сохранение изменений в db или appconfig и проверка загрузки формы – SK2185

+0

Как сохранить изменения! Да, это то, что я хочу знать. –

ответ

1

У вас есть несколько вариантов. Тот, который я буду использовать, если у вас есть несколько настроек, это встроенный в User Settings, вы можете создать настройку в своих свойствах проекта. Это пример вашего шрифта.

enter image description here

Вы бы затем использовать его, как это.

Private Sub Checkbox1_CheckedChanged() Handles CheckBox1.CheckedChanged 
    If CheckBox1.Checked = True Then 
     Label1.Font = New Font("Comic Sans Ms", 16, FontStyle.Bold) 
     My.Settings.MyNewFont = Label1.Font 
     My.Settings.Save() 
    End If 
End Sub 

Public Sub New() 

    ' This call is required by the designer. 
    InitializeComponent() 
    If Not IsNothing(My.Settings.MyNewFont) Then Label1.Font = My.Settings.MyNewFont 

End Sub 
+0

Я просто попробовал это, и он отлично работал! Теперь я также знаю, как хранить несколько данных! Спасибо! –

1

Да, вы можете использовать внешний файл Css для этой цели

первого создания внешнего Css файл проекта и указать какой стиль по умолчанию

Как файл Css

.Fstyle { 
    font-family: Comic Sans Ms; 
    } 

И ваш aspx

<asp:label id="lblname" runat="server" class="Fstyle"> 

2nd you ca n переписать в этот файл изменения, которые пользователь делает , сохранить изменения в переменных и переопределить этот файл с помощью функции ввода-вывода vb.net, это остается неизменным.

2

Marks ответ, как я хотел бы сделать это Кроме, если вы хотите сохранить изменения для целого ряда различных элементов управления, которые могли бы быть лучше, чтобы петли через них и проверьте настройки по форме закрытия и хранить их в System.Collections.Specialized.StringCollection в My.Settings, то вы можете просмотреть эту коллекцию в форме Load и установить параметры так, как они должны быть.

Сообщите мне, если вы хотите привести пример, и я могу его предоставить.

Пример:

Примечание: Я всегда находил при добавлении System.Collections.Specialized.StringCollection вам нужно добавить пустую строку вручную (вы можете удалить его), чтобы заставить его создать .xml (вероятно, более техническое решение этой проблемы, но это работает для меня)

Я создал одну под названием FormLoadData для того, чтобы определить, какие управления для хранения данных я приставкой их имена с «UC_», если все элементы управления в форме или все в групповом поле и т. д., вы можете пропустить эту проверку.

затем добавить следующую форму закрытия суб:

Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing 
    'clear collection 
    My.Settings.FormLoadData.Clear() 
    'loop through each control on the form 
    For Each Con As Control In Me.Controls 
     'run check to see if it is a control to store changes for 
     If Con.Name.Substring(0, 3) = "UC_" Then 
      'load any settings you wish to store in the collection starting with the control ID 
      My.Settings.FormLoadData.Add(Con.Name & "," & Con.Font.ToString) 
     End If 
    Next 
End Sub 

и следующие под Новый:

Public Sub New() 

    ' This call is required by the designer. 
    InitializeComponent() 

    ' Add any initialization after the InitializeComponent() call. 
    'loop through controls 
    For Each Con As Control In Me.Controls 
     'loop through settings to compare 
     For Each item In My.Settings.FormLoadData 
      'check stored name against control name 
      If Con.Name = item.Split(",").ElementAt(0) Then 
       'update settings 
       Con.Font = New Font(item.Split(",").ElementAt(1), Con.Font.Size) 
       MsgBox(item) 
       Exit For 
      End If 
     Next item 
    Next Con 
End Sub 

Существует, безусловно, лучший способ сделать это, а затем цикл по коллекции, созданной, но если вы не храните данные для тысяч элементов управления, это будет работать нормально.

Мой браузер играет вверх, поэтому я не могу проверить, как это выглядит, но, надеюсь, это ясно!

+0

Просьба привести пример. Я получаю сообщение об ошибке. Я знаю, что опаздываю, но если вы добровольно представите пример, я буду очень полезен! –

+0

@ KashishArora Я обновил ответ на примере. – OSKM

Смежные вопросы