簡體   English   中英

C#光標位置在表格中的位置不正確

[英]C# Cursor Position not in right place in forms

我正在嘗試創建一個位於用戶點擊位置的正方形。 我將pSize,pX和pY作為變量來表示正方形的位置和大小。 但是,當我單擊表單時,鼠標單擊的地方在X和Y坐標中至少為70像素的正方形。 我做了(這是在形式點擊功能中):

pX = Cursor.Position.X;
pY = Cursor.Position.Y;

Graphics g = this.CreateGraphics();
SolidBrush brush = new SolidBrush(Color.Black);

g.FillRectangle(brush, pX, pY, pSize, pSize);

這是正在發生的情況的圖片:

屏幕截圖沒有顯示我的光標,但它在左上角。 我還注意到,每次啟動程序時,正方形的偏移量都會發生變化,因此這一次相對較遠,而下一次在兩個軸上可能只有約25個像素。

有人可以告訴我我做錯了什么和/或對此我可以做些什么? 謝謝。

您目前正在獲得游標職位。 這是相對於屏幕的 ,這就是為什么在移動表單時它具有不同的偏移量的原因。

要獲得相對於表單的位置,您需要使用“ 鼠標單擊”位置(聽起來相似,這就是人們的竅門)。

您需要確保Click事件引發一個MouseEventHandler:

this.MouseClick += new System.Windows.Forms.MouseEventHandler(this.DrawSquare);

然后,您需要從事件處理程序中獲取協調信息:

    private void DrawSquare(object sender, MouseEventArgs e)
    {
        int pX = e.X;
        int pY = e.Y;

        int pSize = 10;
        Graphics g = this.CreateGraphics();
        SolidBrush brush = new SolidBrush(Color.Black);

        g.FillRectangle(brush, pX, pY, pSize, pSize);
    }

我認為您不需要光標位置,而只需單擊位置。 嘗試這個:

    private void Form2_MouseClick(object sender, MouseEventArgs e)
    {
        int pX = e.X;
        int pY = e.Y;

        Graphics g = this.CreateGraphics();
        SolidBrush brush = new SolidBrush(Color.Black);

        g.FillRectangle(brush, pX, pY, 10, 10);//Size just for testing purposes
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM