我創建了一個面板(Windows 表單面板),它覆寫了表單上的一個表面。Panel: Panel triggerDataRefreshStudentPanel = new Panel(); 我想觸發這個事件(當滑鼠進入面板區域時,觸發這個事件)
triggerDataRefreshStudentPanel_MouseEnter();
我已經設定為:
triggerDataRefreshStudentPanel.Enabled = true, triggerDataRefreshStudentPanel.Visible = false;
但是,該事件不起作用,只有在兩者都為真時才起作用。我只想啟用面板,但不可見。實際上,當滑鼠進入一個區域時,我想觸發一些東西......這就是我選擇這樣做的原因。或者,有沒有其他方法可以做我想做的事情?
uj5u.com熱心網友回復:
從鏈接嘗試此解決方案 或嘗試制作具有透明背景的面板...這樣面板將可見但具有透明背景..
uj5u.com熱心網友回復:
禁用和/或不可見的控制元件不會呼叫包括滑鼠事件在內的輸入事件。這就是禁用控制元件功能的想法。
但是,當滑鼠在禁用和/或不可見的子項上操作時,父控制元件會接收滑鼠事件。因此,您可以處理父MouseMove事件以在滑鼠進入和離開禁用控制元件的邊界時得到通知。
處理MouseMove父控制元件的事件如下:
// To avoid the redundant calls...
private bool isMouseEntered;
// `ParentControl` the parent of the disabled control. Form, Panel, GroupBox...
private void ParentControl_MouseMove(object sender, MouseEventArgs e)
{
// Optional to execute this code only when the control
// is disabled or invisible.
if (disabledControl.Enabled && disabledControl.Visible) return;
if (disabledControl.Bounds.Contains(e.Location))
{
if (!isMouseEntered)
{
isMouseEntered = true;
// Call/do here whatever you want...
}
}
else if (isMouseEntered)
{
isMouseEntered = false;
// If you have something to do when the mouse leaves
// the disabled/invisible control...
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/391696.html
上一篇:-Headers:術語“-Headers”不被識別為cmdlet的名稱,-Azure函式在cmd提示符下運行并呼叫Web請求
下一篇:接收json作為字串始終為空
