自定义组合框如何关闭窗口?

seahi 2016-03-02 11:56:06


入上图,自己写了一个组合宽,下拉列表用的是个FORM,现在的问题是,如果我在FORM点击鼠标,然后收起列表(实际是隐藏窗口)没有问题,但如果我不点FORM,而点其它控件的时候如何关闭这个FORM呢?

请注意,图片中的第一个文本框内输入内容时列表中的数据会相应的重新检索,也就是说列表框的FORM虽然显示了,但是却没有焦点的,此时如果点其它控件,FORM不会触发失去焦点的事件。
...全文
194 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
seahi 2016-04-27
  • 打赏
  • 举报
回复
引用 14 楼 qbilbo 的回复:
菜单窗体大致代码
Control source;
public Control Source
{
            get
            {
                return source;
            }
            set
            {
                source = value;
                if (source != null)
                {
                    source.Leave += (s, e) =>
                        {
                            Close();
                        };
                }
            }
}

protected override void OnShown(EventArgs e)
{
            base.OnShown(e);
            if (source != null)
            {
                   //调用位置
            }
}
调用(假设菜单窗体是MenuForm): MenuForm mnu = new MenuForm(); mnu.Source = TextBox1; mnu.Show();
此法好用,多谢了。
seahi 2016-04-27
  • 打赏
  • 举报
回复
引用 15 楼 u013486262 的回复:
图片中的第一个文本框内输入内容时,Form显示 图片中的第一个文本框的MouseLeave事件触发时,隐藏Form,就可以了
这样是行不通的,因为当我把鼠标移动到弹出的窗体时,第一个文本框的MouseLeave事件就触发了,但这个时候不能隐藏FORM。
漠落雨 2016-03-03
  • 打赏
  • 举报
回复
图片中的第一个文本框内输入内容时,Form显示 图片中的第一个文本框的MouseLeave事件触发时,隐藏Form,就可以了
seahi 2016-03-03
  • 打赏
  • 举报
回复
引用 7 楼 qq_17486399 的回复:
[quote=引用 6 楼 seahi 的回复:] [quote=引用 5 楼 duanzi_peng 的回复:] [quote=引用 4 楼 seahi 的回复:] [quote=引用 3 楼 duanzi_peng 的回复:] 遍历当前窗体集合,找到这个窗体,然后关闭。
在什么事件里面?[/quote] “点击其它按钮”的事件中。[/quote] 那根本不可能啊,我不可能把窗体中每个控件都加点击事件啊。[/quote] 这是一个根本的方法,如果界面上的控件不多,还是这样用吧。我目前也是只知道这个方法[/quote] 在第一个文本框中输入数据的时候FORM会弹出,但是这个时候FORM是没有焦点的。 所以这个方法行不通啊。
seahi 2016-03-03
  • 打赏
  • 举报
回复
引用 7 楼 qq_17486399 的回复:
[quote=引用 6 楼 seahi 的回复:] [quote=引用 5 楼 duanzi_peng 的回复:] [quote=引用 4 楼 seahi 的回复:] [quote=引用 3 楼 duanzi_peng 的回复:] 遍历当前窗体集合,找到这个窗体,然后关闭。
在什么事件里面?[/quote] “点击其它按钮”的事件中。[/quote] 那根本不可能啊,我不可能把窗体中每个控件都加点击事件啊。[/quote] 这是一个根本的方法,如果界面上的控件不多,还是这样用吧。我目前也是只知道这个方法[/quote] 我这个是做的一个自定义控件,会放到各种界面,这个实现方式不大好啊。
qbilbo 2016-03-03
  • 打赏
  • 举报
回复
菜单窗体大致代码
Control source;
public Control Source
{
            get
            {
                return source;
            }
            set
            {
                source = value;
                if (source != null)
                {
                    source.Leave += (s, e) =>
                        {
                            Close();
                        };
                }
            }
}

protected override void OnShown(EventArgs e)
{
            base.OnShown(e);
            if (source != null)
            {
                   //调用位置
            }
}
调用(假设菜单窗体是MenuForm): MenuForm mnu = new MenuForm(); mnu.Source = TextBox1; mnu.Show();
seahi 2016-03-03
  • 打赏
  • 举报
回复
引用 12 楼 qbilbo 的回复:
在菜单窗体中加个属性,比方叫source,在set中添加source的Enter和Levae事件处理,在那里显示,隐藏自己。
能描述的详细一点么?
qbilbo 2016-03-03
  • 打赏
  • 举报
回复
在菜单窗体中加个属性,比方叫source,在set中添加source的Enter和Levae事件处理,在那里显示,隐藏自己。
socg 2016-03-03
  • 打赏
  • 举报
回复
所有控件都加mousedown事件,除第一个文本框之外的事件都关闭窗口。 也可以试试文本框焦点移出事件。 另外最好用系统的下拉控件,可以使用自己绘制下拉列表,系统有接口的,关于数据源过滤,可以参考我的博客
飞天凤凰601 2016-03-02
  • 打赏
  • 举报
回复
窗体的Deactivate事件 可以实现
E次奥 2016-03-02
  • 打赏
  • 举报
回复
DataGrid失去焦点就把窗体隐藏
大鱼> 2016-03-02
  • 打赏
  • 举报
回复
引用 6 楼 seahi 的回复:
[quote=引用 5 楼 duanzi_peng 的回复:] [quote=引用 4 楼 seahi 的回复:] [quote=引用 3 楼 duanzi_peng 的回复:] 遍历当前窗体集合,找到这个窗体,然后关闭。
在什么事件里面?[/quote] “点击其它按钮”的事件中。[/quote] 那根本不可能啊,我不可能把窗体中每个控件都加点击事件啊。[/quote] 这是一个根本的方法,如果界面上的控件不多,还是这样用吧。我目前也是只知道这个方法
seahi 2016-03-02
  • 打赏
  • 举报
回复
引用 5 楼 duanzi_peng 的回复:
[quote=引用 4 楼 seahi 的回复:] [quote=引用 3 楼 duanzi_peng 的回复:] 遍历当前窗体集合,找到这个窗体,然后关闭。
在什么事件里面?[/quote] “点击其它按钮”的事件中。[/quote] 那根本不可能啊,我不可能把窗体中每个控件都加点击事件啊。
exception92 2016-03-02
  • 打赏
  • 举报
回复
引用 4 楼 seahi 的回复:
[quote=引用 3 楼 duanzi_peng 的回复:] 遍历当前窗体集合,找到这个窗体,然后关闭。
在什么事件里面?[/quote] “点击其它按钮”的事件中。
seahi 2016-03-02
  • 打赏
  • 举报
回复
引用 3 楼 duanzi_peng 的回复:
遍历当前窗体集合,找到这个窗体,然后关闭。
在什么事件里面?
exception92 2016-03-02
  • 打赏
  • 举报
回复
遍历当前窗体集合,找到这个窗体,然后关闭。
seahi 2016-03-02
  • 打赏
  • 举报
回复
引用 1 楼 oysy 的回复:
窗体的Deactivate事件 可以实现
注意看“请注意”后面的描述,不能使用Deactivate事件的。

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧