你们都知道“你们有了新的答案!”关于SO的通知栏。我希望在表格中使用同样的东西,最好是顺畅的。有一个简单的方法吗?或者我必须自己完全创建吗?
我的搜索没有产生任何好结果,系统通知区域中只有很多进度条和弹出窗口,但这不是我想要的。
我要显示的消息属于表单,而不属于整个应用程序
答案 0 :(得分:3)
您可以简单地为从表单客户区顶部下拉的面板设置动画。
在定时循环中增加面板的y坐标。面板将开始不可见并慢慢变得可见。 (该面板将从-panel.height开始,然后向下移动到0。)
答案 1 :(得分:1)
如果您希望将其约束为特定表单,则应该很容易在Panel
设置为Dock
的表单上放置DockStyle.Top
,然后为其设置标签描述和隐藏它的按钮。
答案 2 :(得分:1)
使用面板或UserControl并不困难,但是当条形向下滑动时,繁琐的部分会使表单内容向下滑动。为了简化这一点,我将使用SplitContainer。顶部分割面板包含通知栏,分割器距离最初为0.通过递增SplitterDistance属性将条形图拖动到视图中。这样做意味着您不必担心将表单的其他内容向下滑动(这很麻烦,因为它会阻止您使用对接)。
使用SplitContainer的唯一不足之处我可以想到的是,条形图的动画会略有不同:文本不会随着条形向下滚动,当条形图向下滑动时它会显示在原位。如果这让您感到困扰,可以通过在增加分割器距离(仅增加几行代码)时将文本(或面板/自定义控件)向下滑动来修复它。
显示栏:
for (int i = 0; i <= 33; i++)
{
splitContainer1.SplitterDistance = i;
Thread.Sleep(5);
Refresh();
}
隐藏栏:
for (int i = 33; i >= 0; i--)
{
splitContainer1.SplitterDistance = i;
Thread.Sleep(5);
Refresh();
}
当然,如果您不介意通知栏只是覆盖表单的顶部,那么您可以使用面板轻松完成整个操作。 :)
答案 3 :(得分:1)
在表单中创建两个面板,一个停靠在顶部的通知面板,以及一个固定在顶部的内容面板。在Form.Load中,将通知面板的高度设置为零。在“设计视图”中不要将高度设置为零,您将无法单击通知面板进行编辑。
然后,当您收到通知时,在通知面板中绘制内容并创建一个System.Windows.Form.Timer,每隔几十毫秒左右就会将通知面板的高度增加几个像素。当面板具有所需高度时停止。以负高度执行相同操作以隐藏面板。
这不需要重新绘制或重新计算任何尺寸或位置,不会透支任何东西,并且看起来很光滑。我做到了这一点并且有效。
答案 4 :(得分:0)
我刚才正在寻找同样的事情并找到了this on code project
我还没用过它,所以我不知道它有多坚固。