Porady: tworzenie ustawień aplikacji
Za pomocą kodu zarządzanego można utworzyć nowe ustawienia aplikacji i powiązać je z właściwościami w formularzu lub kontrolkach formularza, aby te ustawienia były ładowane i zapisywane automatycznie w czasie wykonywania.
W poniższej procedurze ręcznie utworzysz klasę otoki, która pochodzi z klasy ApplicationSettingsBase. Do tej klasy należy dodać właściwość publicznie dostępną dla każdego ustawienia aplikacji, które chcesz uwidocznić.
Tę procedurę można również wykonać przy użyciu minimalnego kodu w projektancie programu Visual Studio. Zobacz też Instrukcje: tworzenie Ustawienia aplikacji przy użyciu Projektant.
Aby programowo utworzyć nową aplikację Ustawienia
Dodaj nową klasę do projektu i zmień jej nazwę. W tej procedurze wywołamy tę klasę
MyUserSettings
. Zmień definicję klasy, aby klasa pochodziła z ApplicationSettingsBaseklasy .Zdefiniuj właściwość dla tej klasy otoki dla każdego wymaganego ustawienia aplikacji i zastosuj tę właściwość za ApplicationScopedSettingAttribute pomocą właściwości lub UserScopedSettingAttribute, w zależności od zakresu ustawienia. Aby uzyskać więcej informacji na temat zakresu ustawień, zobacz Application Ustawienia Overview (Omówienie usługi Application Ustawienia). Do tej pory kod powinien wyglądać następująco:
using System; using System.Configuration; using System.Drawing; public class MyUserSettings : ApplicationSettingsBase { [UserScopedSetting()] [DefaultSettingValue("white")] public Color BackgroundColor { get { return ((Color)this["BackgroundColor"]); } set { this["BackgroundColor"] = (Color)value; } } }
Imports System.Configuration Public Class MyUserSettings Inherits ApplicationSettingsBase <UserScopedSetting()> _ <DefaultSettingValue("white")> _ Public Property BackgroundColor() As Color Get BackgroundColor = Me("BackgroundColor") End Get Set(ByVal value As Color) Me("BackgroundColor") = value End Set End Property End Class
Utwórz wystąpienie tej klasy otoki w aplikacji. Zazwyczaj jest to prywatny element członkowski formularza głównego. Teraz, gdy zdefiniowano klasę, musisz powiązać ją z właściwością; w tym przypadku BackColor właściwość formularza. Można to zrobić w procedurze obsługi zdarzeń formularza
Load
.MyUserSettings mus; private void Form1_Load(object sender, EventArgs e) { mus = new MyUserSettings(); mus.BackgroundColor = Color.AliceBlue; this.DataBindings.Add(new Binding("BackColor", mus, "BackgroundColor")); }
Dim Mus As MyUserSettings Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Mus = New MyUserSettings() Mus.BackgroundColor = Color.AliceBlue Me.DataBindings.Add(New Binding("BackColor", Mus, "BackgroundColor")) End Sub
Jeśli udostępnisz sposób zmiany ustawień w czasie wykonywania, musisz zapisać bieżące ustawienia użytkownika na dysku po zamknięciu formularza lub inne zmiany zostaną utracone.
//Make sure to hook up this event handler in the constructor! //this.FormClosing += new FormClosingEventHandler(Form1_FormClosing); void Form1_FormClosing(object sender, FormClosingEventArgs e) { mus.Save(); }
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing Mus.Save() End Sub
Pomyślnie utworzono nowe ustawienie aplikacji i powiązaliśmy je z określoną właściwością.
W poniższym przykładzie przedstawiono plik ustawień aplikacji, który definiuje dwa ustawienia o zakresie aplikacji i dwa ustawienia o zakresie użytkownika. Należy dodać nazwy ustawień utworzonych jako wpisy w <elemecie configSections> w górnej części pliku.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="WindowsApplication1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</sectionGroup>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="WindowsApplication1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" />
</sectionGroup>
</configSections>
<applicationSettings>
<WindowsApplication1.Properties.Settings>
<setting name="Cursor" serializeAs="String">
<value>Default</value>
</setting>
<setting name="DoubleBuffering" serializeAs="String">
<value>False</value>
</setting>
</WindowsApplication1.Properties.Settings>
</applicationSettings>
<userSettings>
<WindowsApplication1.Properties.Settings>
<setting name="FormTitle" serializeAs="String">
<value>Form1</value>
</setting>
<setting name="FormSize" serializeAs="String">
<value>595, 536</value>
</setting>
</WindowsApplication1.Properties.Settings>
</userSettings>
</configuration>
Zabezpieczenia.NET Framework
Dostawca ustawień domyślnych, LocalFileSettingsProvider, utrwala informacje w plikach konfiguracji jako zwykły tekst. Ogranicza to zabezpieczenia zabezpieczeń dostępu do plików zapewniane przez system operacyjny dla bieżącego użytkownika. W związku z tym należy zachować ostrożność przy użyciu informacji przechowywanych w plikach konfiguracji. Na przykład jednym z typowych zastosowań ustawień aplikacji jest przechowywanie parametry połączenia wskazujących magazyn danych aplikacji. Jednak ze względu na obawy związane z zabezpieczeniami takie ciągi nie powinny zawierać haseł. Aby uzyskać więcej informacji na temat parametry połączenia, zobacz SpecialSetting.
Zobacz też
.NET Desktop feedback