Tag: flicker

尽管有WS_EX_COMPOSIET标志和DoubleBuffered属性,但在resize后闪烁

我有一个TableLayoutPanel,我在其中使用布局中的控件执行一些拖放操作。 不幸的是,控制在掉落动作后闪烁。 我在所有控件和许多其他东西上尝试了DoubleBuffered = true。 我也试过这个解决方案: 如何修复用户控件中的闪烁 。 实际上它与上面提到的CreateParams一起工作得很好。 但只有在我调整表单大小之前。 在resize后,Windows似乎忘记了WS_EX_COMPOSIET标志。 它只出现在航空主题上。 如果没有aero,它会在resize后保留CreateParams的设置。 打开aero主题时有没有办法防止闪烁?

尽管双重缓冲,但自动收报机仍在闪烁

有没有人知道如何摆脱闪烁? 我研究了SO,网络,并试了很多不同的东西,比如把TickerControl放到双缓冲面板和双缓冲时没有在OnPaint()中绘图:为什么它不起作用? 除了许多其他的东西。 它仍然闪烁,不是每次重复,而是每秒几次。 此外,即使在OnPaint中删除“g.Clear(BackColor)”之后,仍然必须清除背景,因为文本继续可读地滚动。 这里是我的TickerControl类的相关部分: class TickerControl : Control { private static readonly StringFormat stringFormat = new StringFormat(StringFormatFlags.NoWrap); private const int padding = 40; private const int scrollSleep = 10; private const int scrollAdvancePixels = 1; private float textWidth; private float currentX; private static readonly Timer scrollTimer = new Timer(); public TickerControl() { this.SetStyle(ControlStyles.UserPaint […]

在ListView控件中闪烁(OwnerDraw,Virtual)

此问题可能被视为使用ownerdraw和virtualmode在listview中闪烁的后续行动。 我在Virtual mode有一个ListView控件,我尝试执行自定义绘图。 项目渲染通过以下方法覆盖完成: protected override void OnDrawItem(DrawListViewItemEventArgs eventArgs) 如引用的问题所述,自定义绘图会在鼠标hover事件上引入闪烁。 调试器告诉我这是由于过多的自定义绘制事件被触发而发生的。 现在 – 引用问题的接受答案告诉我们: 这是.NET的ListView中的一个错误,你不能通过双缓冲绕过它。 那么, 这些信息有多可靠? 这真的是一个错误吗? 或者我们可能只是试图切断部分消息并希望它不会改变可见行为? 这是真的,如果我在Virtual Mode,拥有我的所有者绘图例程的ListView Virtual Mode,我可以抑制这些Custom Draw事件,只在WM_PAINT执行我的绘图,或者,在某些情况下这可能是不正确的? System.Windows.Forms控件能够在不改变它的初始行为的情况下完成WM_PAINT所有绘制,有哪些先决条件?

更新期间停止TextBox闪烁

我的WinForms应用程序有一个TextBox,我将其用作日志文件。 我正在使用TextBox.AppendText(string);附加没有闪烁forms的文本TextBox.AppendText(string); 但是当我尝试清除旧文本时(因为控件的.Text属性达到.MaxLength限制),我得到了可怕的闪烁。 我正在使用的代码如下: public static void AddTextToConsoleThreadSafe(TextBox textBox, string text) { if (textBox.InvokeRequired) { textBox.Invoke(new AddTextToConsoleThreadSafeDelegate(AddTextToConsoleThreadSafe), new object[] { textBox, text }); } else { // Ensure that text is purged from the top of the textbox // if the amount of text in the box is approaching the // MaxLength property of the […]

防止WPF窗口闪烁

我有一个无边框的WPF窗口,需要能够隐藏其中一个控件并同时缩小窗口。 问题是它看起来很糟糕。 这就是我现在正在做的事情: private void btnShowHideTopBar_Click(object sender, RoutedEventArgs e) { if (commandTopHide == true) { txtblkShowHideTopBar.Text = “Show Top Bar”; commandTopHide = false; myWindow.Left = 1100; myWindow.Width = 180; RSide.Width = new GridLength(0, GridUnitType.Pixel); } else if (commandTopHide == false) { txtblkShowHideTopBar.Text = “Hide Top Bar”; commandTopHide = true; myWindow.Left = 1030; myWindow.Width = 250; […]

在Windows窗体应用程序中闪烁

我有一个应用程序,它有很多控件。 并且它有大量的闪烁,特别是在启动时。 我将此修复程序应用于它。 protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x02000000; // WS_EX_COMPOSITED return cp; } } 这很有效 – 闪烁的数量减少了令人难以置信的数量。 但是,副作用是当我将鼠标移动或单击它们时,窗口右上角的最小化,最大化和关闭按钮不会生成动画(它们仍然有效)。 这给应用程序带来了一种感觉。 如何在保留最大化,最小化和关闭按钮的可用性的同时保留WS_EX_COMPOSITED? 这种情况发生在Windows XP上。 正如@fallenidol所指出的,这不是Windows 7上的问题。