标签在一定长度后无意中消失

Nat*_*Coy 6 .net c# label timer winforms

我有一个相当大(宽度明智)的C#WinForms应用程序,它使用System.Windows.Forms.Label内部a System.Windows.Forms.Panel作为Marquee.

A 在滴答事件后System.Timers.Timer更新Label位置.

int new_X_location = (label.Location.X + distance_invariant) % modulo;
label.Location = new Point(new_X_location, label.Location.Y);
Run Code Online (Sandbox Code Playgroud)

选框的功能不是问题,当我更改Label.Text字段时,标签消失!

string some_string = working_function_that_returns_string();
label.Text = some_string; //disappears!
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

当字体大小(24pt)时,似乎限制在大约2100个字符的长度.当它更小(10pt)时,字符串可以更长(label.Text.Length >= 4200).

string some_string = working_function_that_returns_string();
label.Text = some_string.SubString(0,2000); //it's still visibile here.
...
label.Text = some_string.SubString(0,2200) //it's not visible!
Run Code Online (Sandbox Code Playgroud)

我不确定它是否与宽度限制或字体大小限制或表格宽度定位有关..较小的字体和较短的字符串定位是​​正确的.因此,它不是定位误差.

Vin*_*ayC 1

您是否尝试过使用固定大小的标签(AutoSizefalse )和AutoEllipsis属性 true ?如果是由于宽度限制或包装问题造成的,那么它应该消失。

如果这不能解决问题,那么您可能需要查看定位代码。如果在位置计算中使用标签宽度,则由于文本更改而导致的宽度更改可能会在某些极端情况下引发一些意外。同样,拥有固定尺寸的标签(或具有一些最大尺寸)可能会有所帮助。

  • @user1934851,较长文本的标签大小值是多少?确定阈值(标签大小或文本大小)并切换到“AutoSize = false,AutoEllipsis = true”。另一种方法是通过增加高度来允许文本换行,但它比以前的选项更乏味。 (2认同)