■ 특정 위치에서 컨트롤을 구하는 방법을 보여준다.
▶ 특정 위치에서 컨트롤 구하기 예제 (C#)
1 2 3 4 5 6 7 8 9 |
using System.Drawing; using System.Windows.Forms; Point sourcePoint = new Point(50, 50); // 로컬 좌표계 Point targetPoint = PointToScreen(sourcePoint); // 화면 좌표계 Control control = GetControl(targetPoint); // 해당 위치에 컨트롤이 없는 경우 null을 반환한다. |
▶ 특정 위치의 컨트롤 구하기 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
using System; using System.Diagnostics.CodeAnalysis; using System.Drawing; using System.Runtime.InteropServices; using System.Windows.Forms; #region 포인트에서 윈도우 구하기 - WindowFromPoint(point) /// <summary> /// 포인트에서 윈도우 구하기 /// </summary> /// <param name="point">포인트</param> /// <returns>윈도우 핸들</returns> [DllImport("user32.dll", CharSet=CharSet.Auto)] [SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", MessageId = "0")] public static extern IntPtr WindowFromPoint(Point point); #endregion #region 컨트롤 구하기 - GetControl(point) /// <summary> /// 컨트롤 구하기 /// </summary> /// <param name="point">포인트</param> /// <returns>컨트롤</returns> /// <remarks>포인트는 화면 좌표계 포인트이다.</remarks> public Control GetControl(Point point) { return Control.FromChildHandle(WindowFromPoint(point)); } #endregion |