如何在单击时启用禁用的控件

时间:2014-08-22 19:30:33

标签: c# grid click devexpress isenabled

我有一个DevExpress网格,在屏幕上被禁用。当我单击该控件时,我希望它被启用。现在我为网格设置了一个点击事件:

        private void gridPSR_Click(object sender, EventArgs e)
        {
            gridPSR.Enabled = true;
        }

这不起作用。我该怎么办呢?

3 个答案:

答案 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;
}

这将启用您的禁用按钮,因为它是一个单独的按钮。

可以这样想,如果您的按钮被禁用,则点击事件被禁用。那么它如何实现自己呢?