【问题标题】:Cut status strip label to width of form将状态条标签切割成表格宽度
【发布时间】:2013-04-24 23:42:30
【问题描述】:

我有一个带有状态条的表单,其中包含一个进度条和一个标签。这两者都用于向用户显示多个后台工作人员的状态/进度。

我的问题是,有时标签比表单宽(它包含长度变化很大的参数名称)。该表单具有恒定的宽度,并且用户无法调整其大小。当出现此问题时,标签只是显示为空白,我想将标签剪切到表单的长度并在末尾连接“...”。

谁能给我一些建议,从哪里开始?我已经尝试过 Google 和 SO 搜索,但无法找到类似的东西。我基本上需要找到将在表单上显示的字符串的长度,但我不知道从哪里开始。

【问题讨论】:

  • 您知道您的标签是在什么时候将您的标签与信息绑定的吗?如果可以的话,你可以在应用到你的 label.text 属性后检查长度,只显示一些单词并添加 .. 到结尾。
  • @danywalls。好的,我知道我在哪里将 label.text 设置为字符串。我可以在这里检查 .width 并获得一个像素值并使用它?
  • 是的,检查这个问题stackoverflow.com/questions/388937/… 这个例子展示了如何根据文本数量和字体大小确定标签大小:)
  • 你认为使用 autosize 属性吗? msdn.microsoft.com/es-es/library/…

标签: vb.net winforms label


【解决方案1】:

首先要做的是将StatusStrip.LayoutStyleTable 更改为Flow。这将防止标签消失。接下来,您仍然希望用户有机会阅读标签的全文,即使它被截断了。将StatusStrip.ShowItemToolTips 属性设置为True,将标签的AutoToolTip 设置为True

让标签的文本不与夹点重叠是一个更难解决的问题,但是由于您使表单无法调整大小,因此您没有这个问题。将表单的SizeGripStyle 属性设置为Hide

这将解决您的问题,无需代码。

【讨论】:

  • +1 很好的答案。我建议另一个不错的可能性:调整文本字体的大小(具有可读限制)以适应给定的空间(就像 Apple 应用程序通常在他的表单上所做的那样)
  • +1,它几乎就在那里,但是状态条现在将进度条放在标签上方(使状态条高一倍)。有没有办法避免这种情况?
  • @SysDragon 好主意,但字体在整个表单中具有一致的大小,并且标签中的信息在右侧变得不那么“有用”。大多数字符串适合它只是那些以长参数名称作为结尾的字符串。并且用户无法与特定于标签显示内容的应用进行任何进一步的交互。
  • 我没有指望 ProgressBar。返回表,将标签的 Spring 属性设置为 True。确保它是最后一项,进度条应该是第一个。
  • 我已经按照最后几个步骤进行操作,并且可以正常工作。谢谢
【解决方案2】:

你可以试试这样的:

Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click
    If Label1.Text.Length > iMaxLblLenght Then
        Label1.Text = Label1.Text.Substring(0, iMaxLblLenght) & "..."
    End If
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 2022-08-10
    • 2011-09-03
    • 2018-08-09
    • 2014-10-16
    相关资源
    最近更新 更多