Получить позицию курсора по отношению к элементу управления - C #

Просто добавьте переменную encode ('utf-8')

agent_contact.encode('utf-8')
29
задан Ani 20 November 2011 в 12:35
поделиться

8 ответов

Вы можете напрямую использовать свойство Location аргумента MouseEventArgs, передаваемого вашему обработчику событий.

private void panel1_MouseMove(object sender, MouseEventArgs e)
{
    Text = e.Location.X + ":" + e.Location.Y;      
} 
27
ответ дан Ani 20 November 2011 в 12:35
поделиться

Используйте Control.PointToClient , чтобы преобразовать точку из экранных координат в контрольные координаты. Если вам нужно пойти другим путем, используйте PointToScreen.

41
ответ дан BrendanMcK 20 November 2011 в 12:35
поделиться

Можно использовать следующие методы для получения относительного от абсолютного и абсолютного от относительных координат:

Point Control.PointToClient(Point point);

Point Control.PointToScreen(Point point);
3
ответ дан TLama 20 November 2011 в 12:35
поделиться

Следующее даст вам координаты мыши относительно вашего контроля. Например, это приводит к (0,0), если мышь находится над левым верхним углом элемента управления:

var coordinates = yourControl.PointToClient(Cursor.Position);
15
ответ дан Justas 20 November 2011 в 12:35
поделиться

Cursor.Position возвращает точку на экране, но Control.PointToClient (Cursor.Position) возвращает точку на элементе управления (например, control -> панель). В вашем случае у вас есть e.Locate, который возвращает точку контроля.

1
ответ дан ndukan 20 November 2011 в 12:35
поделиться

Просто вычтите из позиции курсора левую и верхнюю координаты элемента управления:

this.Text = Convert.ToString(
    Cursor.Position.X - this.Left + ":" +
    Cursor.Position.Y - this.Top);
1
ответ дан BlackBear 20 November 2011 в 12:35
поделиться

Я использую MouseLocation и PointToClient для проверки. А затем используйте его в таймере!

bool IsMouseHover(Control c, Control container)
        {
            Point p = Control.MousePosition;
            Point p1 = c.PointToClient(p);
            Point p2 = container.PointToClient(p);
            if (c.DisplayRectangle.Contains(p1) && container.DisplayRectangle.Contains(p2))
            {
                return true;
            }
            return false;
        }
1
ответ дан Huỳnh Hữu Ân 20 November 2011 в 12:35
поделиться
private void lienzo_MouseLeftButtonDown_1(object sender, MouseButtonEventArgs e)
{
    Point coordenadas = new Point();
    coordenadas = Mouse.GetPosition(lienzo);

    string msg = "Coordenadas mouse :" + coordenadas.X + "," + coordenadas.Y;
    MessageBoxResult resultado;
    string titulo = "Informacion";
    MessageBoxButton botones = MessageBoxButton.OK;
    MessageBoxImage icono = MessageBoxImage.Information;

    resultado = MessageBox.Show(msg, titulo, botones, icono);
}

Где «lienzo» - это моя холщовая панель

0
ответ дан bensiu 20 November 2011 в 12:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: