在我的winform中有一些Splitter来分隔一些datagridviews,有没有办法将分割器位置存储(并恢复)到user.config中?
如果可能的话,我希望避免为每个拆分器添加一个具有不同名称的设置。
提前致谢
答案 0 :(得分:2)
我想出了一些你可以使用的东西。关于这个例子的一些事情:
SplitContainer
,但我想你可以很容易地调整它。SplitContainer
(您可能需要递归执行此操作)。string
。我个人建议为Splitter
(或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];
}
}
答案 1 :(得分:1)
您可以使用文章User Settings Applied中的库将拆分器位置保存到用户设置中。
此外,您可以保留表单大小/位置和任何自定义表单设置。