0

enter image description here

Hello,

Above is the program I am writing. On the right panel is basically two custom controls (the blue rectangle area) I created and just added them as controls to the background panel control when this winform program loads.

I used MS paint to draw out the pop up balloon that I want to see when my mouse enter this control's area. I want to do the following:

   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.

Can this be done with Winform application? I looked around and found out about Tooltip class but so far from researching I don't know if it does what I want to do.

I could be wrong but googling around gave me the impress that Tooltip offers very little in term of style. Ideally I want to make this pop up balloon into almost like a border-less pop up window where I can put image , font ect.....at will. Also Tooltip works if you hover over a button or specific field whereas I want the entire control area.

Can this be done? I appreciate if you can point me to any work around if there is one.

4

3 回答 3

1

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

如果您不确定如何制作带圆角的矩形,您可以使用图形对象即时制作(将在屏幕上变成位图)或使其在 GIMP 中显示为您希望的样子(或Photoshop,如果你有它)然后使用该图像作为用户控件的背景。使默认背景透明(因此圆角上方的空隙不是灰色的)。如果您制作了预加载的图像,您需要注意您只能在 Y 和 X 方向上等量缩放它。不等比例会使它看起来失真。

于 2012-10-30T19:21:52.277 回答
1

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

创建自定义弹出表单

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

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

调整风格

您将不得不使用它来让它实际上像一个弹出窗口而不仅仅是一个窗口。我建议将其设置为非模态弹出窗口,并删除边框。您可以编写一个函数来自动调整其大小。我不认为您会希望用户手动调整它的大小。

要研究的其他一些事情将覆盖CreateParams基本 Form 对象附带的属性。您可以在不使表单模式化的情况下强制DropShadows和表单。TopMost覆盖ShowWithoutActivation始终返回 true 将防止表单在弹出时窃取焦点。

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


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

例子

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

于 2012-10-30T19:30:23.730 回答
0

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

于 2012-10-30T19:19:03.497 回答