【问题标题】:c# store multiple splitter position in user.configc#在user.config中存储多个拆分器位置
【发布时间】:2013-07-13 07:59:32
【问题描述】:

在我的 winform 中有一些 Splitter 来分离一些 datagridviews,有没有办法将拆分器位置存储(和恢复)到 user.config 中?

如果可能,我希望避免为每个拆分器添加不同名称的设置。

提前致谢

【问题讨论】:

    标签: c# visual-studio splitter settings


    【解决方案1】:

    我想出了一些你可以使用的东西。关于这个例子的几点说明:

    • 我使用了SplitContainer,但我想你可以很容易地适应它。
    • 我只扫描表单的控件列表 - 此方法不会获取所有 SplitContainer(您可能需要递归执行此操作)。
    • 这假设您有一个名为 SplitterPositions 类型为 string 的用户设置。
    • 这并没有考虑到将来对表单的更改(即重新排列控件、添加新部分、删除现有部分等),因此在这方面它有点脆弱。

    我个人建议为您的Splitters(或SplitContainers,取决于您使用的类型)指定名称,因为这样可以保护您免受我提到的问题的影响。

    无论如何,我希望这会有所帮助。

    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];
        }
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用文章User Settings Applied 中的库将拆分器位置保存到用户设置中。

      此外,您可以保留表单大小/位置和任何自定义表单设置。

      【讨论】:

        猜你喜欢
        • 2015-01-02
        • 1970-01-01
        • 2016-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多