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

问题描述 投票:1回答:3

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

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

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

c# grid click devexpress isenabled
3个回答
6
投票

禁用的控件不会收到Windows消息,因此您永远不会在该控件上获得单击消息。假设这是Winforms,您可以监听表单上的单击(或托管此网格的任何控件),并检查单击位置是否在禁用控件的矩形中,然后相应地启用控件:

void Form1_MouseClick(object sender, MouseEventArgs e)
{
    if (gridPSR.ClientRectangle.Contains(e.Location))
    {
        gridPSR.Enabled = true;
    }
}

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事件相关联。


0
投票

你的按钮点击不应该是private,它应该是protected

其次我相信如果这不起作用,你不能使用disabled按钮来enable按钮。你必须使用另一个按钮:

btnGridPSR.Enabled = false;
protected void btnGridStatus_Click(object sender, EventArgs e)
{
     btnGridPSR.Enabled = true;
}

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

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

© www.soinside.com 2019 - 2024. All rights reserved.