Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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ę wrapper, która dziedziczy z 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 również Jak: tworzyć ustawienia aplikacji przy użyciu Projektanta.
Aby programowo utworzyć nowe ustawienia aplikacji
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 ApplicationSettingsBase.Zdefiniuj właściwość dla tej klasy otoki dla każdego wymaganego ustawienia aplikacji i zastosuj tę właściwość za pomocą ApplicationScopedSettingAttribute lub UserScopedSettingAttribute, w zależności od zakresu ustawienia. Aby uzyskać więcej informacji na temat zakresu ustawień, zobacz Omówienie ustawień aplikacji. 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 opakowującej w aplikacji. Zazwyczaj będzie to prywatny członek formularza głównego. Teraz, gdy zdefiniowano klasę, musisz powiązać ją z właściwością; w tym przypadku właściwość BackColor formularza. Można to zrobić w obsłudze zdarzenia
Load
formularza.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 utworzyłeś nowe ustawienie aplikacji i powiązałeś 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ń, które utworzyłeś jako wpisy w elemencie <configSections> na początku 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 programu .NET Framework
Domyślny dostawca ustawień, LocalFileSettingsProvider, przechowuje 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 parametrów 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 parametrów połączenia, zobacz SpecialSetting.
Zobacz też
.NET Desktop feedback