2016-04-04 88 views
1

我目前正在試圖讓我的小東西,我做的顯示屏幕座標..但我有問題刷新文本到新的X,Y值。自動更新文字標籤?

int x = Cursor.Position.X; 
int y = Cursor.Position.Y; 

textBox1.Text = "X: " + x + " Y: " + y + ""; 
textBox1.Refresh(); 

這就是我的,但我不明白爲什麼它不會令人耳目一新?如果有人能向我解釋這將是很好的。

+2

你的意思是,當你移動鼠標?你是否處理鼠標移動的事件處理程序?這個代碼在哪裏? –

+0

是的,因爲當你移動你的鼠標 –

+0

那麼,你處理適當的事件? –

回答

1

正如Patrick Hofman告訴你的,你必須處理鼠標移動事件。試試這個代碼:

public Form1() 
{ 
    InitializeComponent(); 
    this.MouseMove += new MouseEventHandler(Form1_MouseMove); 
} 

void Form1_MouseMove(object sender, MouseEventArgs e) 
{ 
    int x = Cursor.Position.X; 
    int y = Cursor.Position.Y; 

    textBox1.Text = "X: " + x + " Y: " + y + ""; 
} 
+0

@PatrickHofman我加了一個額外的f,不是嗎? :) – Pikoh

+2

'Refresh'在這種情況下沒有意義。只需設置「文本」就足夠了。 Load'事件處理程序內'MouseMove'的訂閱是非常不尋常的。這看起來不對,除非你有解釋爲什麼你要這樣做。 – Sinatr

+0

@Sinatr你是對的。 textBox刷新是因爲我剛剛複製OP代碼。無論如何,我會刪除我的答案,因爲Patrick Hofman的更好更完整。 – Pikoh

1

該文本並沒有神奇地自我更新。

您必須處理適當的事件,例如您的表單上的MouseMove

因此,在構造函數中掛鉤事件;

public Form1() 
{ 
    InitializeComponent(); // this is usually already there 

    this.MouseMove += Form1_MouseMove; 
} 

然後調用你的代碼的事件處理中:

private void Form1_MouseMove(object sender, MouseEventArgs e) 
{ 
    int x = Cursor.Position.X; 
    int y = Cursor.Position.Y; 

    textBox1.Text = "X: " + x + " Y: " + y + ""; 
} 

注意,當有很多觸發的事件,這可能很慢。根據您的需要,您可以構建一些定時器機制以便每隔一段時間更新一次。

+0

@Jack:你有什麼理由不接受我的回答?有什麼問題嗎?你真的檢查了另一個人的代碼,因爲這是行不通的。 –

+0

我也不明白,我要刪除我的回答 – Pikoh

+0

沒關係@Pikoh –