2015-12-10 175 views
0

我正在製作自定義控件滑塊,以便自己調整外觀。C#自定義控件光標位置

但是,我找不到一種方法來獲取相對於控件的光標位置。 將控件放入我的程序後,每個控件都可以很容易地編寫代碼。但是我希望在自定義控件項目中擁有完整的功能,並且只需要在滑塊進入我的程序之後就擔心從滑塊獲取值。

所以我需要在自定義控件項目中完成光標跟蹤。 我在這裏使用的情況下嘗試:

private void CustomSlider_MouseDown(object sender, MouseEventArgs e) 
    { 

    } 

但是我能夠得到的唯一位置的光標,這將不利於我的「全球」屏幕位置,除非我知道的位置控制。

我希望我的問題很清楚,謝謝。

+3

你看看'eX'和'eY'? – Erik

+0

使用['SetCapture']查看(https://msdn.microsoft.com/en-us/library/windows/desktop/ms646262%28v=vs.85%29.aspx)。你必須拼湊它,但它應該給你你需要的東西。 – xxbbcc

+0

剛剛嘗試過e.X和e.Y,它看起來正是我在找的東西,謝謝:) –

回答

0

以獲得控制的事件處理程序或相應的虛擬方法內的光標的位置,使用MouseEventArgs.LocationMSDN)屬性:

class CustomControl : Control { 
    protected override void OnMouseDown(MouseEventArgs e) { 
     Point cursorPos = e.Location; 
    } 
} 

爲了獲得控制外的光標位置,用Control.MousePositionMSDN)靜態屬性和PointToClient()MSDN)方法:

CustomControl ctrl = ... 
Point cursorPos = ctrl.PointToClient(Control.MousePosition);