点击外面时如何隐藏控件?

时间:2015-06-05 05:12:29

标签: c# winforms picturebox mouseclick-event

我有一个WindowForm和一些控件。

我的观点是当我点击按钮"?"在datagridview的右上角,它会显示一个图片框,当我在pictureBox外面点击它时,它必须是不可见的。

我的主要形象 MainForm

的MyPictureBox

enter image description here

我在这个网站上搜索了一些主题,但有些不工作,有些工作部分。喜欢 this

我也尝试过:

void pictureBox1_LostFocus(object sender, EventArgs e)
    {
        if (pictureBox1.Visible)
            pictureBox1.Visible = false;
    }

但是当我点击button2,button3,...图片框不可见时。

任何解决方案都将受到高度赞赏。

3 个答案:

答案 0 :(得分:0)

designer.cs

中添加此方法
pictureBoxEvent this.MouseLeave += new EventHandler(pictureBox_MouseLeave);

在cs文件中添加此代码:

private void pictureBox_MouseLeave(object sender, EventArgs e)
{
    pictureBox1.Visible = false;
}

答案 1 :(得分:0)

我认为你的pictureBox1并没有失去焦点,因为它从未实际上是GOT聚焦。将其设置为在使其可见后进行聚焦。

答案 2 :(得分:0)

哦,我之前遇到过这个......

我制作了一个可以双击的标签,它可以让你像TextBox一样编辑Label.Text。但是,我在查看事件时遇到问题,以了解用户何时单击控件并希望停止编辑。我尝试了Control.LostFocusControl.Leave,但没有尝试。我甚至感到沮丧/绝望,并尝试了一些像Control.Invalidated那样愚蠢的人。

我最终要做的是订阅其背后的表单/容器/控件的Click事件。

但是,将此事件连接到想要使用它的表单的责任是糟糕的设计。但是,你可以做的是使构造函数控制类需要引用所有者/父/容器作为参数。这样,需求不会被隐藏,在获得对象实例之前必须满足它们,并且控件可以连接到其自身内的Form.Click,该逻辑属于该位置。

    private Form owner;

    public EditLabel(Form Owner)
    {
         this.owner = Owner;
         owner.Click += EndEditing;
    }