在 C# 中获取更改的列宽以保存值并恢复它们

Get changed columns width in c# to save values and restore them

我有一个包含多列的列表视图。我想在每次用户更改列宽时保存列宽,以便能够在下次启动应用程序时恢复值,使列宽与用户之前调整的一样。与下载管理器等应用程序中发生的情况相同。我该如何编码?

我的另一个问题是关于如何获取特定索引处的列名。

好的,我找到了解决方案,但没有人回答我的问题,我想分享一下我是如何做到的。

添加"ColumnWidthChanged"事件处理程序:

this.listView1.ColumnWidthChanged += new System.Windows.Forms.ColumnWidthChangedEventHandler(this.listView1_ColumnWidthChanged);

添加一个 "ColumnWidthChanged" 事件以在更改任何列后检查列宽。然后制作一个字符串并在其中存储列宽及其名称。

private void listView1_ColumnWidthChanged(object sender, ColumnWidthChangedEventArgs e)
            {      
                StringBuilder widths = new StringBuilder();
                widths.Clear();

                for (int i = 0; i < listView1.Columns.Count; i++)
                {
                    int columnWide = listView1.Columns[i].Width;
                    string columnName = listView1.Columns[i].Text;
                    widths.Append(columnName + ":" + columnWide.ToString() + "#");
                }
                string line= widths.ToString(); 
            }

结果将是这样的:column1:xx#column2:xx#column3:xx ...

现在您可以将此字符串保存到一个文件中,以便能够在下次应用启动时检索和恢复大小。 您可以使用 line.Split('#') 轻松提取和使用这些值,以在下次应用启动时设置列大小。