2013-11-28 3 views
2

я еще одна проблема ..как использовать/экстракт идентичности управления внутри элемента управления ActiveX

Рассмотрим глядя на THIS первый ..

на моих ранних проблем, мне нужно перетащить кнопку, и форму в отношении того, как я перетаскиваю/перемещаю pictureBox. Все элементы управления находятся внутри .NET.

Теперь я работаю над этим замечательным Control, GMaps, в котором адаптируется API Google в .NET framework.
Моя цель - создать что-то вроде infoWindow в API Google. поэтому я приступил к его настройке, создав новую форму (действуя как инфо-окно) по первой ссылке выше. Если вы видели Gmaps.net, это действительно карта. Draggable, pan для увеличения, может добавлять маркеры/полигоны. Одной вещью, которой ему не хватает, является ее документация + инструмент infoWindow, который я хочу с маркером.
У него есть только «подсказка», в которой может быть только строка.
ect marker.ToolTipText="Blah Blah"
при обсуждении codeplex, говорится, что вы должны создать свою всплывающую подсказку, чтобы она отображала не только строку. но я не могу найти хороший пример, кроме THIS, в котором наследуется contextMenu, который я не могу особо использовать, потому что всякий раз, когда я нажимаю снова, он исчезает.

назад на мой вопрос, если вы проверили первую ссылку выше, вы будете знать, что я хочу достичь, единственная проблема сейчас, я не могу использовать этот код, как это:

Point p = Button1.PointToScreen(Point.Empty); 
p.Offset(0, (-1 * Form2.Height) - 15); 
Form2.Location = p; 

этот код делает Form2, следуя Button1, где бы он ни находился .. К сожалению, на моем управлении gMap нет кнопки. есть только маркер внутри.
Помните: эта карта является контрольenter image description here

так, как я могу использовать маркер в качестве родителя формы, так что если я пытаюсь перетащить карту, то .. что-то вроде этого:

Point p = marker.PointToScreen(Point.Empty); 
p.Offset(0, (-1 * Form2.Height) - 15); 
Form2.Location = p; 

UPDATE Я использовал этот код, никаких ошибок, не работает ..

void mainMap_MouseDown(object sender, MouseEventArgs e) 
    { 

     Point p = (marker.LocalPosition = PointToScreen(Point.Empty)); 
     //Point p = button1.PointToScreen(Point.Empty); --> this gives the error that it cannot be converted 
     p.Offset(0, (-1 * f2.Height) - 15); 
     f2.Location = p; 
    } 
+0

Это зависит от вашего 'marker', если он поддерживает какое-либо свойство, чтобы отрегулировать его положение, вы можете сделать то же самое с ним, как и с кнопкой. Попробуйте просмотреть все его элементы в окне «Обозреватель объектов» или всплывающее окно intellisense, чтобы узнать, есть ли какой-либо член (свойство или метод), который вы можете использовать для поиска этого маркера. –

+0

он говорит, не может неявно преобразовать точку gmaps.net в system.drawing.point. значение, я думаю, что gmaps распознает только точки latLong. но позвольте мне проверить. – AdorableVB

+0

см. Обновление .. скажите, если вам что-то нужно. @KingKing – AdorableVB

ответ

0
void mainMap_OnMapDrag() 
    { 

     f2.Show(); 
     f2.Location = marker.LocalPosition; 
     //No offsetting.. 
    } 

свойство LocalPosition получает положение маркера относительно экрана. Единственная проблема - это функция Dispose в C#, если вы создаете только один экземпляр, вы не можете его воссоздать, если вы добавите экземпляр, он создаст Form2 каждый перемещенный пиксель. В VB будет лучше.