Estoy teniendo problemas con la fundición de tipo y el uso de las interfaces correctas. Tengo una función que recorre todos los elementos de texto con una propiedad específica. Una vez que se encuentra una coincidencia, quiero ser capaz de seleccionar este elemento de texto o hacer que sea activo o resaltado o lo que sea en el mapa. El código es el siguiente.
protected override void OnClick(Item item)
{
IMxDocument pDoc = ValidateInterface.GetMxDocument();
IActiveView pLayout = (IActiveView)pDoc.PageLayout;
IGraphicsContainer pGraphicsCont = (IGraphicsContainer)pDoc.PageLayout;
pGraphicsCont.Reset();
IElementProperties _ElemProps = null;
while ((_ElemProps = (IElementProperties)pGraphicsCont.Next()) != null)
{
if (_ElemProps.CustomProperty is IPropertySet2)
{
ITextElement _textElement = (ITextElement)_ElemProps;
IPropertySet2 _propertySet = (IPropertySet2)_ElemProps.CustomProperty;
MessageBox.Show("Before I compare item to string");
if (item.Caption == Convert.ToString(_propertySet.GetProperty(NAME_STRING)))
{
//Problems start here
MessageBox.Show("Inside the IF statement");
IGraphicsContainerSelect _SelectMyElement = null; // = (IGraphicsContainerSelect)pGraphicsCont;
ITextElement _newTextElement = (ITextElement)pGraphicsCont;
IElement TestElement = _newTextElement as IElement;
_SelectMyElement.SelectElement(TestElement);
}
}
}
}
Sin embargo, no se selecciona nada en mi mapa. Estoy recorriendo cada elemento gráfico (IGraphicContainer) en el mapa. Una vez que encuentro una coincidencia, quiero seleccionar ese elemento gráfico. Estoy tratando de utilizar IGraphicContainerSelect para hacer esto. Toma un tipo de variable IElement como parámetro, por lo que estoy tratando de lanzarlo. Pero de nuevo, no se está seleccionando. Todo esto sucede cuando hago clic en un botón.