Просто добавьте переменную encode ('utf-8')
agent_contact.encode('utf-8')
Вы можете напрямую использовать свойство Location
аргумента MouseEventArgs
, передаваемого вашему обработчику событий.
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
Text = e.Location.X + ":" + e.Location.Y;
}
Используйте Control.PointToClient , чтобы преобразовать точку из экранных координат в контрольные координаты. Если вам нужно пойти другим путем, используйте PointToScreen.
Можно использовать следующие методы для получения относительного от абсолютного и абсолютного от относительных координат:
Point Control.PointToClient(Point point);
Point Control.PointToScreen(Point point);
Следующее даст вам координаты мыши относительно вашего контроля. Например, это приводит к (0,0), если мышь находится над левым верхним углом элемента управления:
var coordinates = yourControl.PointToClient(Cursor.Position);
Cursor.Position возвращает точку на экране, но Control.PointToClient (Cursor.Position) возвращает точку на элементе управления (например, control -> панель). В вашем случае у вас есть e.Locate, который возвращает точку контроля.
Просто вычтите из позиции курсора левую и верхнюю координаты элемента управления:
this.Text = Convert.ToString(
Cursor.Position.X - this.Left + ":" +
Cursor.Position.Y - this.Top);
Я использую 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;
}
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» - это моя холщовая панель