C# c在user.config中存储多个拆分器位置
在我的winform中有一些拆分器来分隔一些DataGridView,是否有方法将拆分器位置存储并恢复到user.config中 如果可能的话,我希望避免为每个拆分器添加具有不同名称的设置C# c在user.config中存储多个拆分器位置,c#,visual-studio,splitter,settings,C#,Visual Studio,Splitter,Settings,在我的winform中有一些拆分器来分隔一些DataGridView,是否有方法将拆分器位置存储并恢复到user.config中 如果可能的话,我希望避免为每个拆分器添加具有不同名称的设置 提前谢谢我想出了一些你可以使用的东西。关于这个例子,有几点: 我使用了SplitContainer,但我想你可以很容易地适应它。 我只扫描表单的控件列表-此方法不会提取您可能需要递归执行的所有SplitContainer。 这假设您有一个名为string类型的SplitterPositions的用户设置。 这
提前谢谢我想出了一些你可以使用的东西。关于这个例子,有几点: 我使用了SplitContainer,但我想你可以很容易地适应它。 我只扫描表单的控件列表-此方法不会提取您可能需要递归执行的所有SplitContainer。 这假设您有一个名为string类型的SplitterPositions的用户设置。 这没有考虑表单将来的更改,例如重新排列控件、添加新节、删除现有节等,因此在这方面有点脆弱。 我个人建议为您的拆分器或拆分容器指定名称,这取决于您使用的类型,因为这样可以避免我提到的问题 无论如何,我希望这能有所帮助
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];
}
}
我想出了一些你可以用的东西。关于这个例子,有几点: 我使用了SplitContainer,但我想你可以很容易地适应它。 我只扫描表单的控件列表-此方法不会提取您可能需要递归执行的所有SplitContainer。 这假设您有一个名为string类型的SplitterPositions的用户设置。 这没有考虑表单将来的更改,例如重新排列控件、添加新节、删除现有节等,因此在这方面有点脆弱。 我个人建议为您的拆分器或拆分容器指定名称,这取决于您使用的类型,因为这样可以避免我提到的问题 无论如何,我希望这能有所帮助
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];
}
}
您可以使用文章中的库将拆分器位置保存到用户设置中
此外,您还可以保留表单大小/位置和任何自定义表单设置。您可以使用文章中的库将拆分器位置保存到用户设置中 此外,您还可以保留表单大小/位置和任何自定义表单设置