我有一个DevExpress网格,在屏幕上被禁用。当我单击该控件时,我希望它被启用。现在我为网格设置了一个点击事件:
private void gridPSR_Click(object sender, EventArgs e)
{
gridPSR.Enabled = true;
}
这不起作用。我该怎么办呢?
答案 0 :(得分:6)
已禁用的控件不会收到Windows消息,因此您永远不会获得该控件上的单击消息。假设这是Winforms,您可以监听表单上的点击(或托管此网格的任何控件),并检查点击位置是否在禁用控件的矩形中,然后相应地启用控件:
void Form1_MouseClick(object sender, MouseEventArgs e)
{
if (gridPSR.ClientRectangle.Contains(e.Location))
{
gridPSR.Enabled = true;
}
}
答案 1 :(得分:3)
我知道它是一个老帖子,但对我而言是工作而不是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
事件链接。
答案 2 :(得分:0)
您点击的按钮不应该是private
,而应该是protected
。
第二,我相信如果这不起作用,你就不能使用disabled
按钮来enable
按钮。你必须使用另一个按钮:
btnGridPSR.Enabled = false;
protected void btnGridStatus_Click(object sender, EventArgs e)
{
btnGridPSR.Enabled = true;
}
这将启用您的禁用按钮,因为它是一个单独的按钮。
可以这样想,如果您的按钮被禁用,则点击事件被禁用。那么它如何实现自己呢?