を左に整列しています。
理由はShowGroups
プロパティです。
ListViewItem lvi = listView1.Items[3];
lvi.Position = new Point(lvi.Position.X + 50, lvi.Position.Y);
lvi.Text = "X testing X";
しかし、これはListView
場合は効果がありません。ここで
それは偽だった場合は、各ListViewItem
についてPosition
を計算することができ..
はListViewItem
の位置を変更する方法です残念ながらShowGroups = true
があります。また、オフセットを単純なタスクとして計算することもありません。結局のところ、Items
の数に応じて、グループ内および行内にはの両方が異なることになる。
したがって、ListView
をオーナーロドレスする必要があります。これは機能しますが、正確な位置を決定する際に同じ問題が発生します。
2つのアイテムをセンタリングすると、レイアウト全体がギザギザに見えて、醜いです。
おそらく最も簡単な解決策は回避策です。必要に応じてダミーアイテムを追加するだけです。その画像は透明またはそのImageIndex = -1;
で、そのテキストは空白または空白になります。行の項目の最大値で割り切れない奇数の項目を持つすべてのグループに挿入します。 3.お使いの場合または、おそらくグループが一つだけのアイテムが含まれているかどうかをチェックするのに十分な..です
次に例を示します。
void InsertBlankItem(ListView lv, ListViewGroup lvg)
{
ListViewItem lvOld = g.Items[0];
lvg.Items.Remove(lvOld);
ListViewItem lviBlank = new ListViewItem() { Text = " ", ImageIndex = -1 };
lviBlank.Group = lvg;
listView1.Items.Add(lviBlank);
lvg.Items.Insert(1, lvOld);
}
これは空白の項目を追加し、最後に最初の項目に移動..:もちろん
private void button1_Click(object sender, EventArgs e)
{
foreach (ListViewGroup g in listView1.Groups)
{
if (g.Items.Count == 1) InsertBlankItem(listView1, g);
}
}
あなたはグループ内のあなたItems
再オーダー以上にしたい場合は、今あなたがListView
..
にクリック可能なダミーのアイテムを持っていますそれらをすべてリストに削除し、それらを新しい順序で再追加する必要があります。
出典
2016-05-08 16:01:53
TaW