【发布时间】:2014-03-20 10:16:11
【问题描述】:
如何按标签在屏幕上的位置排列标签列表? 我的标签在屏幕上移动,但只在 X 轴上移动,这是我拥有的代码,但我注意到它不起作用。
labels.OrderBy(x => x.Location.X);
提前谢谢你!
编辑:这就是我测试它是否有效的方式......
private void actualizarPosicoes() {
labels.OrderBy(x => x.Location.X);
MessageBox.Show(labels.First.Value.Text.ToString());
}
但我想在从屏幕上删除标签时使用它,但首先我必须让 OrderBy 工作。
private void reorder(Label lb) {
labels.OrderBy(x => x.Location.X);
var it = labels.GetEnumerator();
var node = it.Current;
while (it.MoveNext())
{
var nextNode = it.MoveNext();
if (nextNode != null)
{
if (nextNode.Equals(lb))
{
nextNode = it.MoveNext();
it.Current.Location = new Point(node.Right, 0);
}
}
node = it.Current;
}
}
我有一个名为标签的全局链表:
private LinkedList<Label> labels;
【问题讨论】:
-
你怎么知道它不起作用?
-
它的哪一部分不起作用?他们都有相同的父控件吗?还是它们属于不同的控件?您如何在排序之前获得初始列表?
-
请交更多你的代码,根本不够继续。我唯一能猜到的是您需要将
labels的值重新分配为OrderBy的结果。即labels = labels.OrderBy(x => x.Location.X);但在您提供更多上下文之前,这只是一个猜测。 -
它返回带有有序列表的新Enumerable,你想做什么?
-
@JoãoSilva 您试图将所有标签对齐成一行,中间没有空格?