1

以下のコードを使用して、再起動時にウィンドウの位置とサイズを保存および復元しています。

このコードを実行するたびに、28 ピクセルの上方ドリフトが観察されます。

間違った値を読み取っていますか、それとも間違って復元していますか? 28 という数字 (クロームのサイズ?) はどこから来ているのでしょうか (そして、コード内の固定数ではなく、プログラムでどのように説明しますか)?

これが私のコードです:

public partial class MainStudioWindowControl : RibbonWindow
{
    public MainStudioWindowControl()
    {
        App.MainWindowOwner = this;
        this.Loaded += new System.Windows.RoutedEventHandler(MainStudioWindowControl_Loaded);
    }

    void MainStudioWindowControl_Loaded(object sender, System.Windows.RoutedEventArgs e)
    {
        System.Windows.Window mainWindow = System.Windows.Application.Current.MainWindow;
        mainWindow.WindowStartupLocation = System.Windows.WindowStartupLocation.Manual;
        if (Studio.Properties.Settings.Default.Width > 0)
        {
            mainWindow.Left = Studio.Properties.Settings.Default.Left;
            mainWindow.Top = Studio.Properties.Settings.Default.Top;
            mainWindow.Width = Studio.Properties.Settings.Default.Width;
            mainWindow.Height = Studio.Properties.Settings.Default.Height;
        }
        Debug.WriteLine(string.Format("Loading: Top = {0}", this.Top));
    }

    protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
    {
        base.OnClosing(e);
        System.Windows.Window mainWindow = System.Windows.Application.Current.MainWindow;
        Studio.Properties.Settings.Default.Left = mainWindow.Left;
        Studio.Properties.Settings.Default.Top = mainWindow.Top;
        Studio.Properties.Settings.Default.Width = mainWindow.Width;
        Studio.Properties.Settings.Default.Height = mainWindow.Height;
        Studio.Properties.Settings.Default.Save();
        Debug.WriteLine(string.Format("Saving: Settings.Top = {0}", Studio.Properties.Settings.Default.Top));
    }
}
4

1 に答える 1

3

これを試して:

1)RibbonWindowではなく、通常のWindowからクラスを派生させます。それで修正される場合は、RibbonWindowの問題です。

2)ハードコードされた値を使用して、Loadedハンドラーで測定値を設定します-それで修正された場合、問題は設定と関係があります。

これらの2つの変更により、私にとってはうまくいきました。毎回必要な場所にウィンドウが表示されました。

于 2008-12-06T15:56:49.540 に答える