0

私はwinformsを使用しており、ユーザーが変更したときにフォームのデスクトップの場所とサイズを保存したいと考えています。便利なコードをいくつか見つけて、それをフォームの終了イベントとフォームの読み込みイベントに入れて、サイズと場所をそれぞれ保存および読み込みました。

ただし、ユーザーが最初にプログラムを閉じずに PC を直接シャットダウンすると、変更されたサイズと場所は保存されません。

したがって、サイズ変更イベントと場所変更イベントで同じコードを使用しましたが、プログラムが再起動しても機能せず、サイズと場所は変更されません。

private void frmScopeStatus_SizeChanged(object sender, EventArgs e)
{
    Application.UserAppDataRegistry.SetValue("WindowState", this.WindowState);
    Application.UserAppDataRegistry.SetValue("WindowSizeH", this.Size.Height);
    Application.UserAppDataRegistry.SetValue("WindowSizeW", this.Size.Width);
    Application.UserAppDataRegistry.SetValue("LocationX", this.DesktopLocation.X);
    Application.UserAppDataRegistry.SetValue("LocationY", this.DesktopLocation.Y);
}

 private void frmScopeStatus_LocationChanged(object sender, EventArgs e)
{
    Application.UserAppDataRegistry.SetValue("WindowState", this.WindowState);
    Application.UserAppDataRegistry.SetValue("WindowSizeH", this.Size.Height);
    Application.UserAppDataRegistry.SetValue("WindowSizeW", this.Size.Width);
    Application.UserAppDataRegistry.SetValue("LocationX", this.DesktopLocation.X);
    Application.UserAppDataRegistry.SetValue("LocationY", this.DesktopLocation.Y);
}
4

1 に答える 1

3

Userこれらの値を格納するスコープのアプリケーション設定データ バインディングを提供できます。

  • デザイナーでフォームを開く
  • フォーム プロパティData > (Application Settins)グループに移動
  • Location(およびClientSize) プロパティ (スコープ ユーザー)のデータバイニングを追加します。
  • イベントFormClosing時に変更されたプロパティを保存Properties.Settings.Default.Save();

%SYSTEMDRIVE%/Users/{username}/AppData/Local/CompanyName/AppNameこれにより、アプリケーションの開始時に適用されるユーザー設定を使用して、アプリケーション ファイル (で) の各ユーザーが作成されます。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <userSettings>
        <AppName.Properties.Settings>
            <setting name="FormLocation" serializeAs="String">
                <value>345, 234</value>
            </setting>
            <setting name="FormSize" serializeAs="String">
                <value>458, 555</value>
            </setting>
        </AppName.Properties.Settings>
    </userSettings>
</configuration>

ところでFormClosed、アプリケーションの設定を保存するには、イベントの方が適していると思います。

于 2012-11-26T08:01:10.010 に答える