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);
解决方案
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.