
ArcGIS Engine和C#,在PageLayout控件上双击选取TextElement失败
下面是双击排版控件的代码privatevoidm_PageLayoutCtrl_OnDoubleClick(objectsender,IPageLayoutControl...
下面是双击排版控件的代码
private void m_PageLayoutCtrl_OnDoubleClick(object sender, IPageLayoutControlEvents_OnDoubleClickEvent e)
{
IElement pElement = null;
IGraphicsContainerSelect pGCS = m_PageLayoutCtrl.PageLayout as
IGraphicsContainerSelect;
IGraphicsContainer pGC = m_PageLayoutCtrl.ActiveView.FocusMap as
IGraphicsContainer;
pGC.Reset();
pElement = pGC.Next();
while (pElement != null)
{
if (pElement.HitTest(e.pageX, e.pageY, 1))
{
if (pElement is ITextElement)
{
MessageBox.Show((pElement as ITextElement).Text);
return;
}
}
pElement = pGC.Next();
}
}
为什么实际上双击了文本元素 TextElement 却if (pElement is ITextElement)为false呢
实在搞不明白原因,请各位不吝赐教!谢谢~ 展开
private void m_PageLayoutCtrl_OnDoubleClick(object sender, IPageLayoutControlEvents_OnDoubleClickEvent e)
{
IElement pElement = null;
IGraphicsContainerSelect pGCS = m_PageLayoutCtrl.PageLayout as
IGraphicsContainerSelect;
IGraphicsContainer pGC = m_PageLayoutCtrl.ActiveView.FocusMap as
IGraphicsContainer;
pGC.Reset();
pElement = pGC.Next();
while (pElement != null)
{
if (pElement.HitTest(e.pageX, e.pageY, 1))
{
if (pElement is ITextElement)
{
MessageBox.Show((pElement as ITextElement).Text);
return;
}
}
pElement = pGC.Next();
}
}
为什么实际上双击了文本元素 TextElement 却if (pElement is ITextElement)为false呢
实在搞不明白原因,请各位不吝赐教!谢谢~ 展开
1个回答
展开全部
HitTest的容差是不是太大了,改为0.1看看,if (pElement.HitTest(e.pageX, e.pageY, 0.1))
其实最简单的方法就是直接用select Elements工具做,即可移动也可以编辑属性。
其实最简单的方法就是直接用select Elements工具做,即可移动也可以编辑属性。
追问
我用了selectElementsTool,但是只能进行选中、移动、删除等操作。很奇怪,用selectElementsTool就能够选中文本要素了。但是没有办法编辑属性吧?
追答
你选中制图元素后 自己写一个属性窗体Properties ,把selectElement 传进去就可以了
if (selectElement is ITextElement)
{
Properties propertiesForm = new Properties(pPageLayout, selectElement as ITextElement);
propertiesForm.Visible = true;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询