在我的winform中有一些拆分器来分离一些datagridviews,有没有办法将拆分器位置存储(并恢复)到user.config中?c#在user.config中存储多个拆分器位置
我希望避免为每个拆分器添加一个不同名称的设置(如果可能的话)。
在此先感谢
在我的winform中有一些拆分器来分离一些datagridviews,有没有办法将拆分器位置存储(并恢复)到user.config中?c#在user.config中存储多个拆分器位置
我希望避免为每个拆分器添加一个不同名称的设置(如果可能的话)。
在此先感谢
我想出了一些你可能能够使用的东西。关于这个例子的几件事:
SplitContainer
,但我想你可以适应这很容易。SplitContainer
(您可能需要递归执行此操作)。string
类型的SplitterPositions的用户设置。我个人建议你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];
}
}
您可以使用该库从文章User Settings Applied到分离器的位置保存到用户设置。
此外,您可以保留表单大小/位置和任何自定义表单设置。
谢谢@Pwninstein,我会试试! – ghiboz