在我的 winform 中有一些拆分器来分隔一些数据网格视图,有没有办法将拆分器位置存储(和恢复)到 user.config 中?
如果可能的话,我希望避免为每个拆分器添加具有不同名称的设置。
提前致谢
在我的 winform 中有一些拆分器来分隔一些数据网格视图,有没有办法将拆分器位置存储(和恢复)到 user.config 中?
如果可能的话,我希望避免为每个拆分器添加具有不同名称的设置。
提前致谢
我想出了一些你可以使用的东西。关于这个例子的一些事情:
SplitContainer
,但我想你可以很容易地适应它。SplitContainer
(您可能需要递归执行此操作)。string
。我个人建议为您Splitter
的 s(或SplitContainer
s,取决于您使用的类型)分配名称,因为这样可以保护您免受我提到的问题的影响。
无论如何,我希望这会有所帮助。
public Form1()
{
InitializeComponent();
Closing += Form1_Closing;
ApplySavedSplitterData();
}
void Form1_Closing(object sender, CancelEventArgs e)
{
SaveSplitterData();
}
private void SaveSplitterData()
{
Settings.Default.SplitterPositions = string.Join(";",
Controls.OfType<SplitContainer>()
.Select(s => s.SplitterDistance));
Settings.Default.Save();
}
private void ApplySavedSplitterData()
{
if (string.IsNullOrEmpty(Settings.Default.SplitterPositions))
{
return;
}
var positions = Settings.Default.SplitterPositions
.Split(';')
.Select(int.Parse).ToList();
var splitContainers = Controls.OfType<SplitContainer>().ToList();
for (var x = 0; x < positions.Count && x < splitContainers.Count; x++)
{
splitContainers[x].SplitterDistance = positions[x];
}
}
您可以使用文章用户设置应用中的库将拆分器位置保存到用户设置中。
此外,您可以保留表单大小/位置和任何自定义表单设置。