在布局上设置 TabOrder 时出现问题
也许我不明白需要做些什么来重新排序布局,但我非常确定我正在做的事情不起作用....public void moveLayout(string name, bool up)。{。
Document acDoc = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;。
Database acDB = acDoc.Database;。
LayoutManager acLayoutMgr = LayoutManager.Current;。
using (acDoc.LockDocument())。
{。
using (Transaction acTrans = acDB.TransactionManager.StartTransaction())。
{。
如果(向上)。
((Layout)acTrans.GetObject(acLayoutMgr.GetLayoutId(name), OpenMode.ForWrite)).TabOrder -= 1;。
还。
((Layout)acTrans.GetObject(acLayoutMgr.GetLayoutId(name), OpenMode.ForWrite)).TabOrder += 1;。
acTrans.Commit();。
acDoc.Editor.Regen();。
}。
}。
}我确信它的基本的东西,我错过了...我似乎有一个森林/树木的时刻:-/。
**** Hidden Message *****
我不能抽出时间玩,但你
看过诺曼斯的博客文章
http://drive-cad-with-code.blogspot.com.au/2011/06/set-layout-in-order.html 在更改taborder之前,您必须使其成为当前的吗?
我看过那个帖子。如果我能确信它像宣传的那样有效,我不会反对做它所建议的事情。现在,我想在taborder中将一个标签向上或向下重新排序。
我确实有一个想法,我会尝试解决这个问题。
如果您尝试将3个连续的选项卡设置为Taborder 2会发生什么......这可能会告诉您您使用的代码失败的原因......
我开始思考您的问题和现实生活赶上了我,所以......
我看过那篇文章。如果我能保证它能像广告中所说的那样工作,我不会反对做它所建议的事情。现在,我想在taborder中向上或向下重新排序单个选项卡
我确实有一个想法,我将尝试看看解决问题的方法
既然我的一篇老文章已经提到了,让我插一句:
我认为你的代码不起作用的原因是你只是试图更改一个布局的TabOrder,但没有尝试更改受影响的布局(更改之前和/或之后的布局),这将导致重复的TabRoder,从而在事务提交时出现异常。如您所见,始终存在模型布局,它始终具有TabOrder=0。因此,不能向下移动TabOrder1=1的布局。如果布局具有最大选项卡顺序,则不能将其上移。因此,当您说“重新排序”布局选项卡时,它实际上是两个布局的交换选项卡顺序:目标布局和它前面的布局(只要它不是“模型”),或它后面的布局(如果它不是最后一个)
public static void SwapLayoutTabOrder(ObjectId lay1Id, ObjectId lay2Id)
{
using (var tran = lay1Id.Database.TransactionManager.StartTransaction())
{
var layout1 = (Layout)tran.GetObject(lay1Id, OpenMode.ForWrite);
var layout2 = (Layout)tran.GetObject(lay2Id, OpenMode.ForWrite);
var order1 = layout1.TabOrder;
var order2 = layout2.TabOrder;
layout1.TabOrder = order2;
layout2.TabOrder = order1;
tran.Commit();
}
}
方法的2个参数是2个布局的ObjectId,只要它们都不是“模型”布局
我刚刚用UI做了一个完整的可演示项目,以验证代码是否如我预期的那样工作。为了让其他可能的读者看到整个项目的代码,我将在今天晚些时候在我的博客中发布它,并在这里发布链接 好的,我在这里发布了完整的代码
http://drive-cad-with-code.blogspot.ca/2017/05/swap-layout-order.html
谢谢你,诺曼
关于,
这就是我得出的结论。我将查看您的代码,看看如何将类似的方法合并到我的项目中。我衷心感谢援助。
顺便说一句,我没有遇到任何错误,它只是不起作用。 在所有受影响的选项卡上设置Taborder解决了这个问题。
感谢您的帮助...一件小事会导致这样的问题,真是令人惊讶!
现在该去弄清楚我一直害怕的另一件事了...
页:
[1]