ListView cloning removes the default font functionality

孤街醉人 提交于 2020-07-31 03:47:18

问题


I have a basic ListView with a few columns.

I create a ListViewItem using:

ListViewItem item = new ListViewItem();
item.Text = "First";
item.SubItems[1].Text = "Second";

Then I add the ListViewItem to my ListView

ListView1.Items.Add(item);

So, I have a method where I change the Font of the ListView1, and if the ListView changes the font, all ListViewItem-s do as well.

But if I use the .Clone() function

ListView1.Items.Add((ListViewItem)item.Clone());

It clones the ListViewItem and it hard codes the Font.

So changing the ListView font won't change the ListViewItem-s font.

ListView1.Font = new Font("Microsoft Sans Serif", 15F, FontStyle.Regular);

回答1:


Just Dispose the current Font of the ListView before setting a new one:

ListView1.Font.Dispose();
ListView1.Font = new Font("Microsoft Sans Serif", 15F, FontStyle.Regular);

This way, the ListViewItem-s including the cloned ones will be forced to inherit the new font of the ListView control.



来源:https://stackoverflow.com/questions/59950483/listview-cloning-removes-the-default-font-functionality

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!