我有一个WindowForm和一些控件。
我的观点是当我点击按钮"?"在datagridview的右上角,它会显示一个图片框,当我在pictureBox外面点击它时,它必须是不可见的。
我的主要形象
的MyPictureBox
我在这个网站上搜索了一些主题,但有些不工作,有些工作部分。喜欢 this
我也尝试过:
void pictureBox1_LostFocus(object sender, EventArgs e)
{
if (pictureBox1.Visible)
pictureBox1.Visible = false;
}
但是当我点击button2,button3,...图片框不可见时。
任何解决方案都将受到高度赞赏。
答案 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.LostFocus
和Control.Leave
,但没有尝试。我甚至感到沮丧/绝望,并尝试了一些像Control.Invalidated那样愚蠢的人。
我最终要做的是订阅其背后的表单/容器/控件的Click事件。
但是,将此事件连接到想要使用它的表单的责任是糟糕的设计。但是,你可以做的是使构造函数控制类需要引用所有者/父/容器作为参数。这样,需求不会被隐藏,在获得对象实例之前必须满足它们,并且控件可以连接到其自身内的Form.Click
,该逻辑属于该位置。
private Form owner;
public EditLabel(Form Owner)
{
this.owner = Owner;
owner.Click += EndEditing;
}