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

时间:2018-09-28 17:31:03

标签: c# listview width multiple-columns

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

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

1 个答案:

答案 0 :(得分:0)

好吧,我找到了解决方案,没有人回答我的问题,我想分享我的做法。

添加“ 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('#')轻松提取和使用值,以在下次应用启动时设置列大小。