2014-04-17 42 views
1

我正在項目上播放視頻。我在面板中使用了播放/暫停/停止按鈕,並且面板被禁用並且最初不可見。我想通過鼠標移動事件來啓用它,但是當我在面板包含的區域移動光標,這並不表明我面板控制,這裏是代碼..面板上的鼠標移動事件不適用於我

private void pnlOne_MouseMove(object sender, MouseEventArgs e) 
{ 
    if (e.X >= top_left.X && e.X <= top_right.X && e.Y >= top_left.Y && e.Y <= bottom_left.Y) 
    { 
     pnlOne.Visible = true; 
     pnlOne.Enabled = true; 
    } 
    else 
    { 
     pnlOne.Visible = false; 
     pnlOne.Enabled = false; 
    } 
} 

現在我該怎麼辦?

+0

你有沒有添加pnlOne.MouseMove + = this.mouseeventhandler(pnlOne_MouseMove);到構造函數? –

+0

我可以在這裏添加這樣的代碼 – HanifCs

+0

InitiallizeComponent();當心!!:我的代碼不是100%正確的。遵循自動完成。 –

回答

3

看不見的面板不會引發任何事件,所以要真正做到這一點的唯一方法是使用一個計時器,檢查鼠標是否是控制的區域或沒有內部:

private Timer timer = new Timer(); 

public Form1() { 
    InitializeComponent(); 
    timer.Tick += timer_Tick; 
    timer.Start(); 
} 

void timer_Tick(object sender, EventArgs e) { 
    Rectangle r = pnlOne.RectangleToScreen(pnlOne.ClientRectangle); 
    if (r.Contains(MousePosition)) { 
    if (!pnlOne.Visible) 
     pnlOne.Visible = true; 
    } else { 
    if (pnlOne.Visible) 
     pnlOne.Visible = false; 
    } 
} 

由於您似乎只關心在鼠標位於控件區域時顯示面板,因此不需要更改面板的「啓用」屬性(僅保留Enabled=true;)。

+0

感謝它現在工作... – HanifCs

0

這已經有一段時間了,但我相當肯定,如果一個控件的.Enabled設置爲false,它將不會響應任何事件處理程序。你從面板被禁用了什麼好處?你應該啓用它,然後嘗試。正如Poomrokc 3年前所說的,確保該方法與事件處理程序綁定在控件上。你不需要以編程方式添加它。您可以在設計器中手動設置(不推薦),也可以選擇面板,然後在「屬性」面板中,轉到事件處理程序並以此方式進行分配。

+0

仍然不能工作 – HanifCs

+0

也許你應該嘗試使用MouseOver而不是MouseMove? – CooperAtlas

0
private void Form1_MouseMove(object sender, MouseEventArgs e) 
{ 
    if (e.X >= pnlOne.Location.X && e.X <= pnlOne.Location.X + pnlOne.Size.Width && pnlOne.Visible == false && e.Y >= pnlOne.Location.Y && e.Y <= pnlOne.Location.Y + pnlOne.Size.Height) 
    { 
     pnlOne.Visible = true; 
     pnlOne.Enabled = true; 
    } 
} 

private void pnlOne_MouseLeave(object sender, EventArgs e) 
{ 
    pnlOne.Visible = false ; 
    pnlOne.Enabled = false ; 
} 
+0

仍然無法正常工作...請將您的電子郵件地址發送給我,然後我會向您發送我的漏洞代碼 – HanifCs

+0

@ user3540132在此處發佈。如果它太長,請上傳到某處查看。 –

0

啓用屬性設置爲false!

無論使用何種鼠標事件對象,都必須將enable屬性設置爲TRUE!