我有一个赢得表格应用程序,并且用户想要滚动消息(如新闻动态消息提要)。菜单栏中的滚动消息
我可以用自动收报机 - 客户希望信息在菜单栏的未使用区域滚动 - 沿着主窗口的顶部。
我不确定您是否可以在菜单栏顶部堆叠控件。
有谁知道这是否可以实现(堆叠在菜单栏上),如果你这样做 - 请提供一些方向。 c#请
谢谢
我有一个赢得表格应用程序,并且用户想要滚动消息(如新闻动态消息提要)。菜单栏中的滚动消息
我可以用自动收报机 - 客户希望信息在菜单栏的未使用区域滚动 - 沿着主窗口的顶部。
我不确定您是否可以在菜单栏顶部堆叠控件。
有谁知道这是否可以实现(堆叠在菜单栏上),如果你这样做 - 请提供一些方向。 c#请
谢谢
这里是我使用的类....
它会创建在工具箱中的自定义控件...它拖到你想要的控制和瓦拉
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System;
using System.Text;
using System.Drawing;
using System.ComponentModel;
using System.Windows.Forms;
namespace Winform_menu
{
internal class NewsTicker : Panel
{
private Timer mScroller; // Scroll timer
private int mOffset; // Offset of scrolled text
private string mText; // Text to scroll
private Size mPixels; // Width of text in pixels
private Bitmap mBuffer; // Double-buffering buffer
public NewsTicker()
{
mScroller = new Timer();
mScroller.Interval = 30;
mScroller.Enabled = false;
mScroller.Tick += DoScroll;
}
[Browsable(true)]
public override string Text
{
get { return mText; }
set
{
mText = value;
mScroller.Enabled = mText.Length > 0;
mPixels = TextRenderer.MeasureText(mText, this.Font);
mOffset = this.Width;
}
}
private void DoScroll(object sender, EventArgs e)
{
// Adjust offset and paint
mOffset -= 1;
if (mOffset < -mPixels.Width) mOffset = this.Width;
Invalidate();
}
protected override void OnPaintBackground(PaintEventArgs e)
{
// Do nothing
}
protected override void OnPaint(PaintEventArgs e)
{
if (mBuffer == null || mBuffer.Width != this.Width || mBuffer.Height != this.Height)
mBuffer = new Bitmap(this.Width, this.Height);
Graphics gr = Graphics.FromImage(mBuffer);
Brush bbr = new SolidBrush(this.BackColor);
Brush fbr = new SolidBrush(this.ForeColor);
gr.FillRectangle(bbr, new Rectangle(0, 0, this.Width, this.Height));
gr.DrawString(mText, this.Font, fbr, mOffset, 0);
e.Graphics.DrawImage(mBuffer, 0, 0);
bbr.Dispose();
fbr.Dispose();
gr.Dispose();
}
}
}
奇怪的要求。这里有一些东西让你开始:
public Form1() {
InitializeComponent();
menuStrip1.Paint += menuStrip1_Paint;
}
void menuStrip1_Paint(object sender, PaintEventArgs e) {
int startLeft = 0;
foreach (ToolStripMenuItem menu in menuStrip1.Items) {
startLeft = Math.Max(startLeft, menu.Bounds.Right);
}
startLeft += 16;
e.Graphics.DrawRectangle(Pens.Red,
new Rectangle(startLeft, 0,
menuStrip1.ClientSize.Width - startLeft - 1,
menuStrip1.ClientSize.Height - 1));
}
它找到可用的菜单条部分。这是您使用计时器绘制的矩形。可能会闪烁。
不错 - 谢谢....但闪烁对他们来说太过分了+1帮助我在正确的方向 – pithhelmet 2013-04-18 18:15:30
如何把Menü酒吧变成一个小组,而不是直接的形式? – 2013-04-09 18:17:08