气球弹出控制鼠标进入/退出

时间:2012-10-30 19:16:18

标签: c# winforms

enter image description here

你好,

以上是我写的程序。在右侧面板上基本上是我创建的两个自定义控件(蓝色矩形区域),并在加载此winform程序时将它们作为控件添加到后台面板控件中。

当我的鼠标进入此控件的区域时,我使用MS绘制画出了我想要看到的弹出气球。我想做以下事情:

   1.  If mouse enter the control area, the yellow area balloon pop up and populate with the information of that specific control
   2.  If mouse move out of the control area, the pop up balloon disappear.

可以使用Winform应用程序完成吗?我环顾四周,发现了Tooltip课程,但到目前为止还没有研究过,我不知道它是否符合我的要求。

我可能错了,但谷歌搜索给了我的印象,工具提供的风格很少。理想情况下,我想让这个弹出气球几乎像一个无边框弹出窗口,我可以随意放置图像,字体等。如果您将鼠标悬停在按钮或特定字段上,而我想要整个控制区域,也可以使用工具提示。

可以这样做吗?如果有的话可以指导我做任何工作,我很感激。

3 个答案:

答案 0 :(得分:1)

由于您已经实现了自定义用户控件,因此可能需要再次尝试。制作一个样式和颜色的控件,根据它的文本更改它的大小。您可以从现有用户控件对象中提供信息(例如要显示的文本)。您也可以将鼠标输入/离开代码驻留在您的第一个用户控件中。

如果您不确定如何制作带圆角的矩形,您可以使用图形对象(将在屏幕上变成位图)动态制作它,或者使它成为您想要的样子GIMP(或者如果你拥有它的Photoshop)然后使用该图像作为用户控件的背景。使默认背景透明(因此圆角上方的空白不是灰色)。如果您制作预装图像,则需要注意,您只能在Y和X方向上均匀缩放。不等的缩放会使它看起来扭曲。

答案 1 :(得分:1)

我写了一条评论,但我想我会把它扩展成一个完整的答案。这假设您需要一个新的控件,这不是工具提示,以实现最大的可定制性。我最近做了类似的工作,作为非模态信息弹出窗口,点击后消失。

创建自定义弹出窗体

你想要的实际上是一个浮动弹出窗口,它出现在你的表单上,这意味着你需要定义一个新的Form对象,而不是UserControl,因为它实际上不是嵌入您的其他表格。

为其添加一个多行,不可编辑的文本框,您可以填写要填充的信息,然后只需在Mouse_Enter事件中调用该表单的新实例即可。在Mouse_Leave关闭它。

调整样式

你必须稍微玩一下才能让它真正像弹出窗口一样,而不仅仅是一个窗口。我建议将其设置为非模态弹出窗口,然后删除边框。您可以编写一个函数来自动调整其内容的大小。我不认为你会希望用户手动调整它的大小。

要研究的其他一些事情将覆盖基本Form对象附带的CreateParams属性。您可以强制DropShadowsTopMost表单,而无需使用表单模式。覆盖ShowWithoutActivation以始终返回true将阻止表单在弹出时窃取焦点。

我不确定你是否可以像你在模型中那样拉出圆形边缘。也许你可以在OnPaint()函数中使用一些魔法来完成它,但我无法告诉你如何去做。


摆弄它可能有点痛苦,但你可以从中获得一些好的功能和外观。如果您认为可以使用ToolTip类可以接受它,那就去吧。我花了大约一个星期的时间来获取我想要的通知(尽管我添加了一些您可能不需要担心的功能)。

实施例

要在相关搜索中查找的某些关键字为Toast NotificationNon-Modal Popup。这可能是一些用途:
http://www.codeproject.com/Articles/442983/Android-Style-Toast-Notification-for-NET

答案 2 :(得分:0)

您可以在控件上使用Mouse_Enter事件吗?