我有一個贏得表格應用程序,並且用戶想要滾動消息(如新聞動態消息提要)。菜單欄中的滾動消息
我可以用自動收報機 - 客戶希望信息在菜單欄的未使用區域滾動 - 沿着主窗口的頂部。
我不確定您是否可以在菜單欄頂部堆疊控件。
有誰知道這是否可以實現(堆疊在菜單欄上),如果你這樣做 - 請提供一些方向。 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