【发布时间】:2019-06-21 05:30:05
【问题描述】:
我有一个包含多列的 listView。我想在每次用户更改列宽时保存它们,以便能够在应用程序的下一次启动时恢复值,以使列宽与用户之前调整的一样。与下载管理器等应用程序中发生的情况相同。如何编码?
我的另一个问题是关于如何在特定索引处获取列名。
【问题讨论】:
标签: c# winforms listview width multiple-columns
我有一个包含多列的 listView。我想在每次用户更改列宽时保存它们,以便能够在应用程序的下一次启动时恢复值,以使列宽与用户之前调整的一样。与下载管理器等应用程序中发生的情况相同。如何编码?
我的另一个问题是关于如何在特定索引处获取列名。
【问题讨论】:
标签: c# winforms listview width multiple-columns
好的,我找到了解决方案,但由于没有人回答我的问题,我想分享一下我是如何做到的。
添加“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('#') 轻松提取和使用这些值,以便在下次应用启动时设置列大小。
【讨论】: