2

我还有一个问题。。

考虑先看看这个..

在我早期的问题上,我需要拖动一个按钮,以及一个与我如何拖动/移动图片框相关的表单。所有控件都在 .NET 中

现在我正在研究这个伟大的控件,GMaps,它在 .NET 框架中适应了谷歌的 API。
我的目标是在 google 的 API 上创建类似于 infoWindow 的东西。所以我通过在上面的第一个链接上创建一个新表单(充当 infoWindow)来定制它。如果您看过 Gmaps.net,它确实是一张地图。可拖动,平移到缩放,可以添加标记/多边形。它缺少的一件事是它的文档+我想要的带有标记的 infoWindow 工具。
它只有它的“工具提示”,其中只能有字符串。
例如marker.ToolTipText="Blah Blah"
,在 codeplex 的讨论中,据说您必须为其创建自己的工具提示,而不是只显示一个字符串。但我找不到一个很好的例子,除了继承一个contextMenu我不能特别使用,因为每当我再次单击时,它就会消失。

回到我的问题,如果你检查了上面的第一个链接,你就会知道我想要实现什么,现在唯一的问题是,我不能按原样使用这段代码:

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

这段代码无论走到哪里都可以Form2跟随Button1。不幸的是,在我的 gMap 控件上,没有按钮。里面只有标记。
记住:这张地图是一个控件在此处输入图像描述

那么,我怎样才能使用标记作为表单的父级,所以如果我尝试拖动地图,它会跟随.. 像这样的东西:

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

更新我使用了这段代码,没有错误,不起作用..

 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;
    }
4

1 回答 1

0
 void mainMap_OnMapDrag()
    {

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

LocalPosition属性获取标记相对于屏幕的位置。唯一的问题是DisposeC#中的函数,如果你只创建一个实例,你不能重新创建它,如果你添加一个实例,它会创建Form2每个移动的像素。在VB中会更好。

于 2013-11-28T05:00:10.543 回答