我有一个DevExpress网格,它在屏幕上被禁用。当我单击该控件时,我希望它被启用。现在我为网格设置了一个点击事件:
private void gridPSR_Click(object sender, EventArgs e)
{
gridPSR.Enabled = true;
}
这不起作用。我该怎么办呢?
禁用的控件不会收到Windows消息,因此您永远不会在该控件上获得单击消息。假设这是Winforms,您可以监听表单上的单击(或托管此网格的任何控件),并检查单击位置是否在禁用控件的矩形中,然后相应地启用控件:
void Form1_MouseClick(object sender, MouseEventArgs e)
{
if (gridPSR.ClientRectangle.Contains(e.Location))
{
gridPSR.Enabled = true;
}
}
我知道这是一个旧帖子,但对我而言,工作而不是ClientRectangle
private void OnPanelMouseClick(object sender, MouseEventArgs e)
{
if ((e.Button == MouseButtons.Left) &&
myControl.Bounds.Contains(e.Location) &&
!myControl.Enabled)
{
myControl.Enabled = true;
}
}
其中myControl
是控件实例的成员变量。 OnPanelMouseClick
处理程序应该与持有控制权的形式或容器的MouseClick
事件相关联。
你的按钮点击不应该是private
,它应该是protected
。
其次我相信如果这不起作用,你不能使用disabled
按钮来enable
按钮。你必须使用另一个按钮:
btnGridPSR.Enabled = false;
protected void btnGridStatus_Click(object sender, EventArgs e)
{
btnGridPSR.Enabled = true;
}
这将启用您的禁用按钮,因为它是一个单独的按钮。
可以这样想,如果您的按钮被禁用,则单击事件被禁用。那它怎么能够自己实现呢?