4

私の Winforms アプリは、GUI の状態をデータベースに保存して復元します。Split Container の SplitterDistance を除いて、すべて正常に動作しています。

値は DB から正しく読み込まれて設定されますが、スプリッターに触れにアプリを終了すると、同じ値が保存されることが期待されます。ただし、初期値から 25 ピクセルを引いた値が保存されます。アプリを何度も開いて閉じると、スプリッターの距離が毎回 25 ピクセルずつ減少します。

これはカスタム コントロールではなく、単なる古い .NET SplitContainer です。コントロールは、初期の SplitterDistance をロードし、終了時に保存するためにプログラムでのみアクセスされます。それ以外には何もありません。

これをトラブルシューティングするにはどうすればよいですか?

更新: spl のFixedPanelプロパティはもともと に設定されていましたNone。に設定してみましPanel1Panel2; どちらの場合も、保存すると SplitterDistanceは50 ピクセル大きくなります。

4

4 に答える 4

1

分割コンテナー内にユーザー コントロールがありますか。おそらく、それらがすべて読み込まれると、それを含むユーザー コントロールと共にサイズが変更されます。

これをトラブルシューティングするには、FixedPanelプロパティを設定して観察します。

于 2012-07-19T19:26:17.327 に答える
1

上記の応答を次のように使用しました (スプリッターは垂直です)。

private void Form1_Load(object sender, EventArgs e) 
{
    int splitContainery = Properties.Settings.Default.SplitterDistance;
    if(splitContainery < splContainer.ClientSize.Width)
        splContainer.SplitterDistance = splContainer.ClientSize.Width - splitContainery;
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    int splitContainery = splContainer.ClientSize.Width - splContainer.SplitterDistance;
    Properties.Settings.Default.SplitterDistance = splitContainery;
    Properties.Settings.Default.Save();            
}

splContainer.SplitterDistance の PropertyBinding を作成しましたが、ApplicationSettings ファイルに含めるためだけにプロパティにバインドしませんでした。

于 2019-08-08T05:43:38.160 に答える
-1
int splitContainery = Properties.Settings.Default.SplitterDistance;

たとえば、使用できる場合は、 iniファイルをProperties.Settings.Default.SplitterDistance使用できません

于 2019-08-28T02:01:25.653 に答える