2014-02-26 81 views
1

沒有過度複雜化一個簡單問題,我試圖讓鼠標懸停在圖像的某個區域上時標籤顏色發生變化。我的代碼應該說明情況:更改MouseHover上的標籤顏色,基於X Y座標

private void picboxMain_MouseHover(object sender, MouseEventArgs e) 
    { 
     int x1 = e.X; 
     int y1 = e.Y; 
     if ((x1 >= 155 && x1 <= 179) && (y1 >= 145 && y1 <= 160)) 
     { 
      lblX.ForeColor = Color.Green; 
      lblY.ForeColor = Color.Green; 
     } 
    } 

但是它不會接受e.X和e.Y參數,獲取鼠標位置和分配給X1和Y1變量。爲什麼它不允許這樣的變量賦值?我已經成功地使用了以下幾乎完全相同的功能,它完美地工

private void picboxMain_MouseUp(object sender, MouseEventArgs e) 
    { 
     int x1 = e.X; 
     int y1 = e.Y; 
     if ((x1 >= 155 && x1 <= 179) && (y1 >= 145 && y1 <= 160)) 
     { 
      Form2 Form2 = new Form2(); 
      Form2.Show(); 
     } 
    } 

爲什麼這個工作而不是其他?

+1

是否有錯誤?斷點被擊中了嗎? – Sayse

+0

我懷疑是因爲你沒有強迫控件刷新。 –

+0

錯誤是'SystemArgs不包含'X'的定義...'和'Y'相同 – ajm

回答

5

取出MouseHover事件處理程序,它不包含MouseEventArgs在第二個參數,然後添加MouseMove處理這樣的代碼:

private void picboxMain_MouseMove(object sender, MouseEventArgs e) 
{ 
    int x1 = e.X; 
    int y1 = e.Y; 
    Color color = (x1 >= 155 && x1 <= 179) && (y1 >= 145 && y1 <= 160) ? Color.Green : Color.Black; 
    lblX.ForeColor = color; 
    lblY.ForeColor = color; 
} 

編輯:而且還MouseLeave應該如何處理。

+0

哦,男人,我怎麼*不*看到這個?我*知道*「MouseHover」事件聽起來不對! :p – Crono

+0

非常好,這已經很完美了,我認爲它一定是用MouseHover事件引發的 – ajm