Имам контрола .NET ListView, в която показвам следи на стека. Използвах ListView, тъй като трябваше да манипулирам шрифта/цветовете на определени редове.
Изглежда обаче, че има някакъв максимум по отношение на ширината на колоните, или броя на показаните знаци, или броя на пикселите, които една колона може да има.
Ето прост пример за LINQPad, който показва проблема:
void Main()
{
using (var fm = new Form())
{
ListView lv = new ListView();
fm.Controls.Add(lv);
lv.Dock = DockStyle.Fill;
lv.View = View.Details;
lv.Columns.Add("C", -1, HorizontalAlignment.Left);
string line = new string('W', 258) + "x";
lv.Items.Add(line);
line = new string('W', 259) + "x";
lv.Items.Add(line);
lv.AutoResizeColumn(0, ColumnHeaderAutoResizeStyle.ColumnContent);
lv.Columns[0].Width.Dump();
fm.ShowDialog();
}
}
екранна снимка:
Както можете да видите, редът, съдържащ 258 W + X, показва x, докато следващият ред, съдържащ едно допълнително W, не показва x.
Резултатът от изчислението на ширината там показва, че текущата ширина на колоната е 2864 пиксела.
Въпросът е следният: Има ли нещо, което мога да променя в ListView, за да заобиколя това ограничение?